吾本轻狂|Spring4基础知识九:Spring之IoC-Bean装配之Bean后处理器( 二 )
总结:为了定义Bean后处理器的处理顺序 , 可以实现Ordered或者PriorityOrdered接口 , 并在getOrder()方法中返回顺序 。 这个方法的返回值越低 , 就代表越高的优先级 , PriorityOrdered接口返回的顺序总是优先于Ordered接口的返回值 。 为了统一一般会实现同一个接口 。
演示
上面说到一个Bean初始化完毕的标志是:一个方法即将被执行 。 那我们可以利用上一章节讲的来定制Bean的生命始末:
定制Bean初始化后的行为(在生成bean时对某些资源进行初始化) , 以及Bean销毁前的行为(在销毁bean时对某些资源进行释放) 。 这两个行为的定义需要通过``标签的属性init-method以及destroy-method完成 。 - init-method:指定初始化方法的名称 。 - destroy-method:指定销毁方法的名称 。
- Bean后处理器定义(MyBeanPostProcessor1、MyBeanPostProcessor2)
//第一个Bean后处理器public class MyBeanPostProcessor1 implements BeanPostProcessor,PriorityOrdered {@Overridepublic Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {System.out.println("我是第一个Bean后处理器----初始化前Before----getOrder["+getOrder()+"]");return bean;}@Overridepublic Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {System.out.println("我是第一个Bean后处理器----初始化后After----getOrder["+getOrder()+"]");return bean;}@Overridepublic int getOrder() {return 1;}}//第二个Bean后处理器public class MyBeanPostProcessor2 implements BeanPostProcessor,PriorityOrdered {@Overridepublic Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {System.out.println("我是第二个Bean后处理器----初始化前Before----getOrder["+getOrder()+"]");return bean;}@Overridepublic Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {System.out.println("我是第二个Bean后处理器----初始化后After----getOrder["+getOrder()+"]");return bean;}@Overridepublic int getOrder() {return 2;}}- 实体Bean
public class Country{private int id;private String name;public Country() {System.out.println("无参构造器实例化...");}public void init(){System.out.println("我是初始化方法 。。。。 ");}public void destroy(){System.out.println("我是销毁方法 。。。。");}}- xml配置
- 测试
@Testpublic void test1(){ClassPathXmlApplicationContext application = new ClassPathXmlApplicationContext("applicationContext.xml");Country country = (Country)application.getBean("country");System.out.println(country);application.close();//销毁}- 测试结果
无参构造器实例化...我是第一个Bean后处理器----初始化前Before----getOrder[1]我是第二个Bean后处理器----初始化前Before----getOrder[2]我是初始化方法 。。。。 我是第一个Bean后处理器----初始化后After----getOrder[1]我是第二个Bean后处理器----初始化后After----getOrder[2]com.spring.bean.Country@3d45bd我是销毁方法 。。。。
推荐阅读
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- LOL|宁王人物志,谁能想到年少轻狂的他最后能成就传奇?他的故事还在继续
- 吾本轻狂|新思科技助力法国电信企业SFR应对软件安全挑战
- 吾本轻狂|设计行业如何在新基建时代抢占先机?
- 吾本轻狂|网易云音乐灰色歌曲下载方法,下架歌曲轻松听
- 笑看尘世|Spring4基础二二-AOP篇-通知(2)-通知详解
- 吾本轻狂|手机充电这点小事?不,那是大事
- 吾本轻狂|2799元的吃鸡配置香不香
- 难免轻狂|老照片上色后真美
- 吾本轻狂|微软最强版DX12杀到:AMD开始爆发比拼NV
- 吾本轻狂|Win10怎么看电脑显卡内存
