2011-12-15 7 views

答えて

114

実際には違いはありませんが、動作する方法には優先順位があります。 @PostConstructinit-methodはBeanPostProcessorsです。

  1. @PostConstructinit-methodは、初期化メソッドを有するSpringの方法であるJSR-250の注釈です。
  2. @PostConstructメソッドを使用している場合、これは初期化メソッドが呼び出される前に最初に呼び出されます。
  3. BeanがInitializingBeanを実装し、afterPropertiesSetをオーバーライドした場合、最初に@PostConstructが呼び出され、次にafterPropertiesSet、次にinit-methodが呼び出されます。

詳細については、Springのreference documentationを確認してください。

+18

Beanはこれらのメソッドの複数を使用して、初期化の順序に依存している場合、恐ろしく複雑でunmaintainableになるだろう。 –

+2

@Donalまあまあです。この仕組みについての情報を提供していただけでした。 –

+1

重要な違いがあります:アノテーションを処理して@PostConstructを動作させるためにSpringを具体的に設定する必要があります:http://stackoverflow.com/q/3434377/134898 –

18

実際の違いはありません。それはあなたのシステムをどのように構成するのが好きか、それは個人的な選択の問題です。自分自身のコードに@PostConstructの注釈を使用することをお勧めします(メソッドが呼び出された後にのみBeanが正しく設定されるため)init-method Spring以外のライブラリからBeanをインスタンス化するときに(もちろんアノテーションを適用できません!)しかし、私は完全にそれをやりたいと思う人々を理解することができます。

4

@postconstructはスプリングの一部ではありません。これはjavaxパッケージの一部です。どちらも同じです。 initメソッドを使用してxmlファイルに追加する必要があります。@postconstructを使用する場合は、xmlでの追加は不要です。下記の記事をご覧ください。

http://answersz.com/spring-postconstruct-and-predestroy/

+0

記事の関連部分を表示できますか? – segarci

関連する問題