2013-06-25 153 views
1

在我的项目,我看到这样一个春天的依赖inujection语法在我的集成层:使用Spring注释注入依赖

applicationContext.getBean("beanName"); 

地点和的ClassPathXmlApplicationContext的applicationContext实例“beanName”在Spring的XML定义。 如果我想用Annotation注入它,我应该使用哪一个? @Inject,@Autowired,@Resource.似乎我可以使用这些中的任何一个,我似乎无法确定哪一个。 这是SPring集成层,而不是MVC层,但我不认为这有什么区别。

回答

4

@Inject@Autowired做同样的事情,它自动按类型。 @Inject是首选,因为它是一个java注释,不会将您与Spring联系起来。

@Resource通过名称的自动装配。当你有许多相同类型的bean时,这很有用。对于相同的行为,您也可以使用@Named@Inject

2

@Inject是同义@Autowired
@Autowired此外报价可选注塑@Autowired(reqired=false)@Inject没有此选项。

@Inject@ResourceJSR-299中被标准化,所以如果可能的话应该被优先考虑。

总之

,顺序提到注释匹配依赖待注射:

@Autowired和按类型@Inject

  1. 相配
  2. 由限定符(@Qualifier注释)
  3. 匹配限制按名称

@Resource

  1. 匹配按名称按类型
  2. 匹配
  3. 限制由预选赛(@Qualifier,如果比赛是由名发现忽略)

你可以找到更多有关这些注释:
http://blogs.sourceallies.com/2011/08/spring-injection-with-resource-and-autowired/