1、注入模型
默认的注入模型:AbstractBeanDefinition.AUTOWIRE_NO=0 通过构造方法注入
1.1、setter方法名称注入模型
AbstractBeanDefinition.AUTOWIRE_BY_NAME=1
1.1.1、现象1
使用setter方法名称注入模型,在这个类中所有的public setter方法的name在容器中(setA A在容器中),就会被选用注入
1.2、setter方法类型注入模型
AbstractBeanDefinition.AUTOWIRE_BY_TYPE=2
1.2.1、现象1
使用setter方法类型注入模型,在这个类中所有的public setter方法并且参数类型在容器中的都会被执行
1.3、构造方法注入模型
AbstractBeanDefinition.AUTOWIRE_CONSTRUCTOR=3
1.3.1、现象1
使用构造方法实例化bean,如果这个类中所有的构造方法只有一个参数,就会选用最后一个构造方法实例化bean
1.3.2、现象2
当构造方法有多个参数时,会选用参数最多的构造方法来实例化bean
2、order
优先级@Order < Ordered接口 < PriorityOrdered接口
2.1 现象
- 和实例化bean的顺序无关
- 和执行bean的顺序无关
- 和bean列表中的顺序有关(获取一批bean中的顺序有关)
3、@DependsOn
优先实例化注解中的类