使用注释自动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”)