1

私のプロジェクトでは、統合レイヤーに次のような春の依存性注入構文が表示されます。

applicationContext.getBean("beanName");

ここで、classpathXMLApplicationContext の applicationContext インスタンスと " beanName" は、Spring xml で定義されます。Annotation で注入したい場合、どちらを使用すればよいですか? @Inject,@Autowired,@Resource.私はこれらのいずれかを使用できるようで、どれを使用するかを決めることができないようです. これは MVC レイヤーではなく SPring 統合レイヤーですが、違いはないと思います。

4

3 に答える 3

4

@Inject@Autowired同じこと を行うと、タイプごとに自動配線されます。@Injectこれは Java アノテーションであり、Spring に結合しないため、推奨されます

@Resource名前で自動配線します。これは、同じタイプの Bean が多数ある場合に便利です。@Namedと一緒に使用し@Injectて、同じ動作を行うこともできます。

于 2013-06-25T16:03:34.853 に答える
2

@Injectと同義@Autowiredです。
@Autowiredさらに、オプションのインジェクション @Autowired(reqired=false) @Injectにはこのオプションがありません。

@InjectJSR-299@Resource標準化されているため、可能であれば優先する必要があります。

つまり、言及された注釈が注入される依存関係と一致する順序:

@Autowired@Inject

  1. タイプ別マッチ
  2. 修飾子による制限 (@Qualifier注釈)
  3. 名前で一致

@Resource

  1. 名前で一致
  2. タイプ別マッチ
  3. 修飾子による制限 ( @Qualifier、名前で一致が見つかった場合は無視されます)

これらの注釈の詳細については、http:
//blogs.sourceallies.com/2011/08/spring-injection-with-resource-and-autowired/を参照してください。

于 2013-06-25T16:09:30.830 に答える
1

@Inject と @Autowired は似ています。ネイティブの Spring アノテーションは @Autowired です。Spring でも Java @Inject アノテーションをサポートしているため、同じことが言えます。

@Resource は Java アノテーションで、Spring もそのアノテーションをサポートしています。JNDI リソースを意味します。

http://static.springsource.org/spring/docs/3.2.x/spring-framework-reference/html/beans.html#beans-annotation-configを参照

http://docs.oracle.com/javase/7/docs/api/javax/annotation/Resource.html

http://docs.oracle.com/javaee/6/api/javax/inject/Inject.html

于 2013-06-25T16:09:27.423 に答える