使用注释按名称自动连接Springbean

使用注释按名称自动连接Springbean,spring,autowired,Spring,Autowired,在Springs的最新版本中,我们可以使用注释作为@Autowired自动连接bean。这将使用bean的类型(或构造函数,如果应用于它的话)自动连接bean。 有什么方法可以使用基于bean名称的@Autowired注释吗?我们在Spring的XML文件中没有注释,例如autowire=“byName”?您可以使用: @Autowired @Qualifier("beanname") 根据 自动关联时,此注释可以在字段或参数上用作候选bean的限定符 除非需要构造函数注入或多参数方法注入,否

在Springs的最新版本中,我们可以使用注释作为
@Autowired
自动连接bean。这将使用bean的类型(或构造函数,如果应用于它的话)自动连接bean。 有什么方法可以使用基于bean名称的
@Autowired
注释吗?我们在Spring的XML文件中没有注释,例如autowire=“byName”

您可以使用:

@Autowired
@Qualifier("beanname")
根据

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


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

从文档中:

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


我使用的是bean名称代理,它通过名称将自动连接搞得一团糟@资源没有这个问题,因为它不关心类型。现在我知道了Spring开发人员推荐此建议的一个原因:-)仅供参考

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

然后使用下面的代码,您可以按名称启用autowire

@Autowired
@Qualifier("employeeManager")
private EmployeeManagerService employeeManagerService;
在bean的java类定义中使用@Component(“beanname”)

然后在自动布线时使用JSR 330

@注入
@命名(Value=“beanname”)

Spring文档中提到了另一个原因:。。。本身定义为集合或映射类型的bean不能通过@Autowired注入,因为类型匹配不适用于它们。很好的发现。不明显。不应该是
@Autowire
而不是
@Autowire