Autowired、Qualifier、Resource注解详细总结

1.Autowired、Qualifier

Autowired默认根据类型注入,若是同一个类型存在多个bean,则会根据名称查找bean,根据哪个名称呢,其实是根据注入类型的属性名。

@Autowired
SupplierService supplierService;

假如存在上面的代码,默认是根据SupplierService 查找bean,如果有多个,则根据supplierService来作为beanName查找对应bean。如果这里还找不到则报异常,顺带说一下类型注入时如果不指定名称则是根据类型的首字母小写作为beanName。那如何解决使用Autowired时多个实例bean的问题呢,这里就可以使用Qualifier注解了,可以通过该注解限定名称,来达到多bean时取特定的bean。

2.Resource

再说说Resource,假如有如下代码:

@Resource
SupplierService supplierService;

默认情况下Resource根据名称注入,根据哪个名称呢也就是supplierService这个属性名,如果指定了name属性则是根据name属性。如果根据名称找不到,则根据type进行注入,如果根据type找到了多个,也会报错,所以使用Resource时最好通过name这一层就把需要的bean过滤到。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐