2、Spring中的一些现象

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,不在bean中的 参数再多也不会选用

2、order

优先级@Order < Ordered接口 < PriorityOrdered接口

2.1 现象

  • 和实例化bean的顺序无关
  • 和执行bean的顺序无关
  • 和bean列表中的顺序有关(获取一批bean中的顺序有关)

3、@DependsOn

优先实例化注解中的类

4、@Lookup

使用@Lookup注解可以将一个方法标记为一个“查找方法”,在调用该方法时,Spring会在运行时为其生成一个具体的实例并返回。

5、@Autowired

通过type匹配, 如果只有一个,就完成匹配
通过type匹配,如果有多个,再通过name匹配

6、 @Resource

通过名字匹配,如果只有一个,就完成匹配
通过名字匹配,如果有多个,就通过type匹配

3、其他

  1. BeanFactoryPostProcessor当中无法解析@Autowired和@PostCOnstruct,但是可以执行InitializingBean#afterPropertiesSet
posted @ 2023-03-22 09:03  尐海爸爸  阅读(18)  评论(0编辑  收藏  举报