自动装配
spring利用依赖注入(DI),完成对IOC容器中各个组件依赖关系的赋值。
@Autowired(Spring独有的)
- 默认优先按照类型去容器中找对应的组件,也就是 applicationContext.getBean(Person.class);
- 如果找到多个相同类型的组件,再使用属性名称作为组件id去容器中查找也就是 applicationContext.getBean(“person”);
- 但是也可以使用
@Qualifier("person")指定需要装配的组件的id,而不是使用属性名 - 自动装配默认一定要将属性赋值好,不然会报错,但是可以使用
@AutoAutowired注解中的required属性避免报错 @Primary,该注解可以让spring进行自动装配的时候默认使用首选的bean,也可以继续使用@Qualifier指定需要装配的bean的名字@Autowired可以标记在方法上,构造器上(组件只有一个有参构造器,可以省略@Autowired注解)、参数上、这个时候参数都是从容器中获取参数组件的值。
@Resource(JSR250)、@Inject(JSR330)[Java规范注解]
@Resource可以实现和@Autowired相同的注解,但是默认是按照组件名称来进行装配的。无法支持@Qualifier、@Primary、required注解。@Inject需要导入javax.inject包,和@Autowired注解基本相同,没有required=fasle功能
注入spring底层容器
- 自定义的组件如果要使用Spring容器底层的一些组件(
ApplicationContext、BeanFactory等等),这个时候自定义组件需要实现xxxAware;在创建对象的时候,会调用接口规定的方法注入相关组件,从而将Spring底层的一些组件注入到自定义的Bean中。xxxAware的功能都是通过xxxAwareProcessor实现。
@Profile
该注解指定组件在哪个环境下才能被住到容器中,如果不做指定,则所有环境都能注入。该注解可以标注到类,方法上。
- 加了环境标示的bean,只有在这个环境被激活时才能注册到容器中,默认环境为default
- 写在配置类上,只有在指定环境的时候,整个配置类才会生效
- 没有标注的bean,在任何环境下都会生效
- 修改环境的方法:
通过命令行参数 -Dspring.profiles.active = 环境名称
本文深入解析Spring框架中的依赖注入机制,包括@Autowired、@Qualifier、@Primary等注解的使用,以及资源注入、环境配置和自动装配的原理。探讨了如何在自定义组件中注入Spring底层容器组件,并介绍了环境配置对组件注册的影响。

被折叠的 条评论
为什么被折叠?



