Spring中Bean的后置处理器
2022-04-13 16:44:47 0 举报
Spring中Bean的后置处理器
作者其他创作
大纲/内容
允许后置处理器再修改下BeanDefinition
选择构造器
BeanPostProcessor#postProcessAfterInitialization
如果指定了组件销毁方法,则注册组件的销毁方法
InstantiationAwareBeanPostProcessor#postProcessBeforeInstantiation如果我们自己创建了对象返回。Spring则不会帮我们创建对象,用我们自己创建的对象? 我们创建的这个对象,Spring会保存单实例?还是每次getBean都调到我们这里创建一个新的?指挥创建一次
BeanPostProcessor#postProcessBeforeInitialization再Bean初始化之前,还可以对Bean做些什么操作比如:可以用我们自己创建的对象替代spring创建的对象
Bean实例化默认使用无参构造器创建bean
SmartInstantiationAwareBeanPostProcessor#determineCandidateConstructors后置处理器有机会在这里决定当前bean用哪个构造器
MergedBeanDefinitionPostProcessor#postProcessMergedBeanDefinition可以再次修改当前已经创建了对象的BeanDefinition
如果我们自己返回了,则调用以下方法
InstantiationAwareBeanPostProcessor#postProcessProperties解析注解,进行属性赋值,比如@Autowired或者我们自定义的注解
Bean真正初始化之前
提前给个机会返回组件的代理对象
创建Bean
Bean初始化之后
Bean初始化如果组件实现了InitializingBean接口,那就调用afterPropertiesSet()方法初始化Bean如果组件制定了初始化方法,那就调用指定的初始化方法
InstantiationAwareBeanPostProcessor#postProcessAfterInstantiation这里可以干点什么,为后面的后置处理器做准备返回值true表示继续让后面的后置处理器执行返回值false表示不让后面的后置处理器执行,赋值到这里就结束了
依赖注入属性赋值
收藏
0 条评论
下一页