使用注释自动assemblyspring bean

在Springs最新版本中,我们可以使用@Autowired标注自动装载一个bean。 这将使用它的types(或构造函数,如果应用的话)自动装载bean。 有没有什么办法可以使用@Autowired注解基于我们在Spring的XML文件中作为autowire =“byName”而没有注释的bean名称?

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

从文档:

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

您可以使用:

 @Autowired @Qualifier("beanname") 

根据@Qualifier javadoc

自动assembly时,此注释可以在字段或参数上用作候选bean的限定符

如果你想定义它们将在DI容器中注册的bean的名字,你可以在注释本身传递这个名字,例如@Service(“employeeManager”)。

然后使用下面的代码,您可以通过名称启用自动assembly

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

我正在使用名称代替自动assembly的bean名称代理。 @资源没有这个问题,因为它不关心types。 所以现在我知道Spring开发人员推荐的一个原因:-)只是FYI

在你的bean的java类定义中使用@Component(“beanname”)

然后,当自动assembly使用JSR 330

@Inject @Named(Value =“beanname”)