在Springs最新版本中,我们可以使用注释@Autowired
自动装配bean。这将使用其类型(或构造函数,如果应用于它)自动装配bean。
有没有办法可以使用基于我们在Spring的XML文件中没有注释的bean名称的@Autowired
注释 autowire =“byName”?
答案 0 :(得分:97)
答案 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)