Spring
控制翻转IOC 可以理解为一个类, 依赖注入可以理解为一个对象
控制反转(IoC)是一个通用的概念,它可以用许多不同的方式去表达,依赖注入仅仅是控制反转的一个具体的例子。
依赖注入的2种方法:
1、构造函数依赖注入
2、setter方法依赖注入
自动装配分为3种:( Spring的byType、byName的自动装配逻辑以及@Autowired和@Resource的使用示例 - 简书 (jianshu.com))
1、byName
很多人以为,byName的自动装配是跟类中的属性有关,其实不是,使用byName进行自动装配时,是利用Java的反射机制获取自动装配类中的set方法名,去掉set后将其首字母小写再到IOC容器中查找是否有对应的beanId,如果有则查看该bean的类型与set方法的参数类型是否匹配,匹配上了则调用set方法进行 依赖注入。因此,byName的自动装配跟set方法名和参数类型有关,跟属性名无关。
2、byType
使用byType进行自动装配时,是利用Java的反射机制获取测试类中的set方法的参数类型,寻找此接口类型的实现类或子类,找到后将其首字母小写与IOC容器中的beanId进行匹配,匹配成功后则调用set方法进行依赖注入。因此,byType自动装配与方法名无关,与属性名无关,与set方法的参数类型有关。
3、由构造函数自动装配
@Resource
默认按照byName方式注入,如果找不到则按照byType方式注入
@Resource放在属性上,如果不写对应的set方法,则程序在运行时,Java的反射机制会自动的帮我们生成一个名为set方法
@Resource放在set方法上,按照set方法的名称(去掉set后将其首字母小写)作为beanId进行注入。例如,下面的setHelloWorld123方法对应的beanId为helloWorld123
@Resource
public void setHelloWorld123(HelloWorld helloWorld) {
this.helloWorld = helloWorld;
}
同时使用xml配置bean和注解配置bean,如果beanId相同,则IOC容器中只会有一个bean
@Autowired
默认按照byType方式注入,如果存在多个Type相同的bean,则按照byName方式注入
spring中如何xml配置文件和注解同时存在,xml配置文件的优先级高于注解
标签:装配,byType,set,Resource,Autowired,byName,注入 From: https://www.cnblogs.com/cumter/p/17805020.html