autowire加载指定实现类_使⽤@Autowired注解实现根据类型
实现⾃动装配
①需求
Controller组件中往往需要⽤到Service组件的实例,Service组件中往往需要⽤到Repository组件的实例。Spring可以通过注解的⽅式帮我们实现属性的装配。
②实现依据
在指定要扫描的包时, 元素会⾃动注册⼀个bean的后置处理器:AutowiredAnnotationBeanPostProcessor的实例。该后置处理器可以⾃动装配标记了@Autowired、@Resource或@Inject注解的属性。
③@Autowired注解
[1]根据类型实现⾃动装配。
[2]构造器、普通字段(即使是⾮public)、⼀切具有参数的⽅法都可以应⽤@Autowired注解
[3]默认情况下,所有使⽤@Autowired注解的属性都需要被设置。当Spring不到匹配的bean装配属性时,会抛出异常。
[4]若某⼀属性允许不被设置,可以设置@Autowired注解的required属性为 false
[5]默认情况下,当IOC容器⾥存在多个类型兼容的bean时,Spring会尝试匹配bean的id值是否与变量名相同,如果相同则进⾏装配。如果bean的id值不相同,通过类型的⾃动装配将⽆法⼯作。此时可以在@Qualifier注解⾥提供bean的名称。Spring甚⾄允许在⽅法的形参上标注@Qualifiter注解以指定注⼊bean的名称。
[6]@Autowired注解也可以应⽤在数组类型的属性上,此时Spring将会把所有匹配的bean进⾏⾃动装配。
[7]@Autowired注解也可以应⽤在集合属性上,此时Spring读取该集合的类型信息,然后⾃动装配所有与之兼容的bean。
[8]@Autowired注解⽤在java.util.Map上时,若该Map的键值为String,那么 Spring将⾃动装配与值类型兼容的bean作为值,并以bean 的id值作为键。
④@Resource
@Resource注解要求提供⼀个bean名称的属性,若该属性为空,则⾃动采⽤标注处的变量或⽅法名作为bean的名称。
⑤@Inject
spring ioc注解@Inject和@Autowired注解⼀样也是按类型注⼊匹配的bean,但没有reqired属性。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。