我有几个相同类型的豆(BeanType
)。我如何通过ID注入注释?说:如何通过ID注入Spring依赖项?
@Autowired @ID("bean1")
public void setBean(BeanType bean) {
}
但是没有注释@ID
。
我只发现@Qualifier
这意味着我将不得不给我所有的豆ID 和限定符。当然,有一个更简单的方法?
我有几个相同类型的豆(BeanType
)。我如何通过ID注入注释?说:如何通过ID注入Spring依赖项?
@Autowired @ID("bean1")
public void setBean(BeanType bean) {
}
但是没有注释@ID
。
我只发现@Qualifier
这意味着我将不得不给我所有的豆ID 和限定符。当然,有一个更简单的方法?
最简单的解决方案是使用@Resource
@Resource(name="bean1")
public void setBean(BeanType bean) {
}
顺便提及,@Qualifier
被使用ID来指代豆与@Autowired
使用,例如
@Autowired @Qualifier("bean1")
public void setBean(BeanType bean) {
}
其中bean1
是的该ID要注入的bean。
对于一个备用的比赛,该bean的名称被认为是默认预选赛值。因此,您可以使用id“main”而不是嵌套的限定符元素来定义bean,从而得到相同的匹配结果。但是,虽然可以使用此惯例通过名称引用特定的bean,但
@Autowired
基本上是关于具有可选语义限定符的类型驱动注入。这意味着限定符值(即使使用bean名称后备)也会在匹配类型集合内缩小语义;它们不会在语义上表达对唯一bean id的引用。
和
如果要表达的名字注解驱动的注入,不主要使用
@Autowired
,即使在技术上是能够通过@Qualifier
值指的是bean的名字。相反,请使用JSR-250@Resource
注释,该注释在语义上定义为通过其唯一名称来标识特定目标组件,并且声明的类型与匹配过程无关。
我更喜欢@Resource
,它更干净(而不是Spring特有的)。
嗯......那么我一定做了错误的事情,因为@Qualifier没有发现任何bean ..`@资源`工程虽然。你能否检查一下`@ Qualifier`是否适用于ID?根据文档,它需要一个``元素在bean中。 –
2011-01-10 16:00:03