原文链 id="bean的生命周期">bean的生命周期
- bean的构造
- 调用set方法设置Bean的属性
- 调用BeanNameAware的setBeanName()方法
- 调用BeanFactoryAware的setBeanFactory()方法
- 调用BeanPostProcessor的postProcessBeforeInitialization()方法
- 调用InitializingBean的afterPropertiesSet()方法,需要bean实现InitializingBean
- 调用自定义的初始化方法(init-method属性指定该方法)
- 调用BeanPostProcessor类的postProcessAfterInitialization()方法
- 调用DisposableBean的destory()方法,需要bean实现DisposableBean
- 调用自定义的销毁方法(destory-method属性指定该方法)
bean的后置处理器
spring提供了两种后置处理器
- Bean后置处理器 对容器中Bean进行后处理,对Bean进行额外加强
- 容器后置处理器 对IOC容器进行处理,增强容器功能
Bean后置处理器
Bean后置处理器是一种特殊的Bean,这种特殊的Bean并不对外服务,主要负责对容器中的其他Bean执行后处理,例如容器中的目标Bean生成代理等。Bean后处理器会在Bean实例创建成功后,为Bean实例进行进一步的增强处理。实现BeanPostProcessor接口,实现postProcessAfterInitialization和postProcessBeforeInitialization方法。
public class MyProcessor implements BeanPostProcessor { /** * 初始化之前 * @param o * @param s * @return * @throws BeansException */ @Override public Object postProcessBeforeInitialization(Object o, String s) throws BeansException { if(o instanceof Connection){ System.out.println("初始化之前"); } return o; } /** * 初始化之后 * @param o * @param s * @return * @throws BeansException */ @Override public Object postProcessAfterInitialization(Object o, String s) throws BeansException { if(o instanceof Connection){ System.out.println("初始化之后"); } return o; }}
这里处理完之后一定要将bean返回回去,否则后续无法获取到bean
注:如果使用BeanFactory作为Spring容器,则必须手动注册Bean后置处理器,程序必须获取Bean后置处理器实例,然后手动注册。
BeanPostProcessor bp = (BeanPostProcessor)beanFactory.getBean("bp");beanFactory.addBeanPostProcessor(bp);Person p = (Person)beanFactory.getBean("person");
容器后置处理器
容器后置处理器负责容器本身,实现BeanFactoryPostProcessor接口,实现接口的postProcessBeanFactory方法对Spring容器进行处理,可以对Spring容器进行自定义扩展,
在BeanFactory标准初始化之后调用,即所有的BeanDefinition已经保存加载到beanFactory中,但是bean的实例还未创建
public interface BeanFactoryPostProcessor { void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException;}
由于本身的博客百度没有收录,博客地 />
原文转载:http://www.shaoqun.com/a/582620.html
洋老板:https://www.ikjzd.com/w/2779
邮政电话:https://www.ikjzd.com/w/202
原文链id="bean的生命周期">bean的生命周期bean的构造调用set方法设置Bean的属性调用BeanNameAware的setBeanName()方法调用BeanFactoryAware的setBeanFactory()方法调用BeanPostProcessor的postProcessBeforeInitialization()方法调用Initializing
关键词分析工具:https://www.ikjzd.com/w/1968
聚贸:https://www.ikjzd.com/w/1305
epa认证:https://www.ikjzd.com/w/1769
库容被限制?这几种有用的解决方法你需要了解:https://www.ikjzd.com/home/125968
客服表现:https://www.kjyunke.com/courses/513
站外:https://www.kjyunke.com/categories/110/courses
No comments:
Post a Comment