注册:将组件放入容器中;
注入:让容器按需进行操作;
一、@Autowired:自动注入组件
原理:Spring调用容器的getBean
二、@Qualifier 精确指定
精确指定:如果容器中组件存在多个,则使用@Qualifier精确指定组件名。
若有默认组件时,也可以使用@Qualifier切换别的组件
三、@Primary
@Primary存在的话,更改属性名就不能实现组件切换了。
四、@Resource
@Autowired和@Resource的区别?
@Resource的包名是jakarta.annotation,前身是Javax(即javaEE标准)规定的。即@Resource是Java标准组织规定的,所有具有容器功能的框架他都支持。
而@Autowired的包名是org.springframework.beans.factory.annotation,是Spring规定的。即只支持Spring。但是他可支持为空:required=false
总结:@Resource具有更强的通用性,但不可忽略当前要注入的Bean,若没有会报错。而@Autowired(required=false)只支持Spring,但他支持忽略当前要注入的bean,如果有直接注入,没有跳过,不会报错。
五、构造器注入
放在容器中后,默认Spring启动会调用无参构造器创建对象。
当是有参构造器时,Spring会自动去容器中找到构造器所需的所有参数的组件值。
六、setter方法注入
七、xxxAware感知接口
八、@Value
(1)@Value(“字面值”):直接赋值
等同于==
(2)@Value(“¥{key}”):动态从配置文件中取出某一项的值
(3)@Value (“¥{SpEL}”):Spring表达式语言(Spring Expression Language)
更多写法:Spring Expression Language (SpEL) :: Spring Frameworkhttps://docs.spring.io/spring-framework/reference/core/expressions.html
九、 @PropertySource
十、ResourceUtils获取资源
十一、@Profile多环境
application.properties :
十二、原生方式使用容器:ClassPathXmlApplicationContext
ioc.xml