使用注释按名称自动装配spring bean

时间:2012-08-06 15:27:30

标签: spring autowired

在Springs最新版本中,我们可以使用注释@Autowired自动装配bean。这将使用其类型(或构造函数,如果应用于它)自动装配bean。 有没有办法可以使用基于我们在Spring的XML文件中没有注释的bean名称的@Autowired注释 autowire =“byName”

5 个答案:

答案 0 :(得分:97)

您可以使用:

@Autowired
@Qualifier("beanname")

根据@Qualifier javadoc

  

当自动装配时,此注释可用作字段或参数作为候选bean的限定符

答案 1 :(得分:45)

除非需要构造函数注入或多参数方法注入,否则可以使用JSR-250 @Resource进行名称bean自动装配。

来自文档:

  

如果您打算按名称表达注释驱动的注入,请不要主要使用@Autowired,即使技术上能够通过@Qualifier值引用bean名称。相反,使用JSR-250 @Resource注释,该注释在语义上定义为通过其唯一名称标识特定目标组件,声明的类型与匹配过程无关。

答案 2 :(得分:2)

我正在使用bean名称代理,它正在通过名称搞乱自动装配。 @Resource没有那个问题,因为它不关心类型。所以现在我知道Spring开发人员提出这个建议的一个原因:-)只是FYI

答案 3 :(得分:2)

如果要定义将在DI容器中注册的bean的名称,可以在注释本身中传递名称,例如: @Service(“employeeManager”)。

然后使用以下代码,您可以按名称启用自动装配

@Autowired
@Qualifier("employeeManager")
private EmployeeManagerService employeeManagerService;

答案 4 :(得分:2)

在bean的java类定义中使用@Component(" beanname")

然后在自动装配时使用JSR 330

@注入 @Named(值=" beanname&#34)