微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

spring开发_BeanPostProcessor_Bean后处理器

gallery/image/112581.html">http://www.cnblogs.com/hongten/gallery/image/112581.html

com.b510.app.test; org.springframework.beans.factory.xml.Xmlbeanfactory; org.springframework.context.ApplicationContext; org.springframework.context.support.ClasspathXmlApplicationContext; org.springframework.core.io.ClassPathResource; com.b510.app.util.AppBeanPostProcessor; com.b510.service.AnimalService; 注册BeanPostProcessor 方法提供的是手动注册BeanPostProcessor SpringTest { main(String[] args) { ApplicationContext act = ClasspathXmlApplicationContext("beans.xml"); 获取id为animaleServiceOfDog的Bean AnimalService animalServiceOfDog = (AnimalService) act .getBean("animaleServiceOfDog"); animalServiceOfDog.getInfo(); 获取id为animaleServiceOfCat的Bean AnimalService animalServiceOfCat = (AnimalService) act .getBean("animaleServiceOfCat"); animalServiceOfCat.getInfo(); System.out .println("*************手动注册BeanPostProcessor处理结果********************"); registerManually(); } 注册BeanPostProcessor registerManually() { sspATH路径下的bean.xml文件创建Resource对象 ClassPathResource isr = ClassPathResource("beans.xml"); beanfactory的实例 Xmlbeanfactory factory = Xmlbeanfactory(isr); 获取Bean后处理器实例 AppBeanPostProcessor prr = (AppBeanPostProcessor) factory.getBean( "appBeanPostProcessor",AppBeanPostProcessor.); 注册BeanPostProcessor实例 factory.addBeanPostProcessor(prr); 获取id为animaleServiceOfDog的Bean AnimalService animalServiceOfDog = (AnimalService) factory .getBean("animaleServiceOfDog"); animalServiceOfDog.getInfo(); 获取id为animaleServiceOfCat的Bean AnimalService animalServiceOfCat = (AnimalService) factory .getBean("animaleServiceOfCat"); animalServiceOfCat.getInfo(); } }

com.b510.app.util; org.springframework.beans.BeansException; org.springframework.beans.factory.config.BeanPostProcessor; com.b510.service.impl.CatServiceBean; com.b510.service.impl.DogServiceBean; com.b510.service.impl.FishServiceBean; com.b510.service.impl.PorkServiceBean; AppBeanPostProcessor BeanPostProcessor { @Override Object postProcessAfterInitialization(Object bean,String beanName) BeansException { System.out.println("postProcessAfterInitialization方法,被处理的Bean的名称为:" + beanName); bean; } 方法是在postProcessAfterInitialization()之前调用 @Override Object postProcessBeforeInitialization(Object bean,String beanName) BeansException { (bean FishServiceBean) { System.out.println("鱼肉Bean被后处理器初始化"); } (bean PorkServiceBean) { System.out.println("猪肉Bean被后处理器初始化"); } (bean DogServiceBean) { System.out.println("狗类Bean被后处理器初始化"); } (bean CatServiceBean) { System.out.println("猫类Bean被后处理器初始化"); } bean; } }

com.b510.service; AnimalService { 获取相关信息 getInfo(); }

com.b510.service; MeatService { 方法whatMeat 一个字符串 String whatMeat(); }

com.b510.service.impl; com.b510.service.AnimalService; com.b510.service.MeatService; CatServiceBean AnimalService { age; MeatService meatService; CatServiceBean(){ System.out.println("猫类被初始化了"); } getAge() { age; } @Override getInfo() { System.out.println("我是猫,我的年龄是:"+age+",我很喜欢吃"+meatService.whatMeat()); } MeatService getMeatService() { meatService; } setAge( age) { .age = age; } setMeatService(MeatService meatService) { .meatService = meatService; } }

com.b510.service.impl; com.b510.service.AnimalService; com.b510.service.MeatService; DogServiceBean AnimalService { age; MeatService meatService; DogServiceBean() { System.out.println("狗类被初始化了"); } getAge() { age; } @Override getInfo() { System.out.println("我是狗,我的年龄是:" + age + ",我很喜欢吃" + meatService.whatMeat()); } MeatService getMeatService() { meatService; } setAge( age) { .age = age; } setMeatService(MeatService meatService) { .meatService = meatService; } }

com.b510.service.impl; com.b510.service.MeatService; FishServiceBean MeatService { FishServiceBean(){ System.out.println("鱼肉类被初始化了"); } @Override String whatMeat() { "鱼肉"; } }

com.b510.service.impl; com.b510.service.MeatService; PorkServiceBean MeatService { PorkServiceBean(){ System.out.println("猪肉类被初始化了"); } @Override String whatMeat() { "猪肉"; } }

xmlns="http://www.springframework.org/schema/beans" xmlns:p="http://www.springframework.org/schema/p" xsi:schemaLocation="http://www.springframework.org/schema/beans http:spring-beans-3.0.xsd"> ="com.b510.service.impl.FishServiceBean"> ="com.b510.service.impl.PorkServiceBean"> ="com.b510.service.impl.DogServiceBean" p:age="12" p:meatService-ref="meatServiceOfPork" /> ="com.b510.service.impl.CatServiceBean" p:age="3" p:meatService-ref="meatServiceOfFish" /> ="com.b510.app.util.AppBeanPostProcessor">

2012-3-12 15:41:10 org.springframework.context.support.AbstractApplicationContext prepareRefresh 信息: Refreshing org.springframework.context.support.ClasspathXmlApplicationContext@19c26f5: display name [org.springframework.context.support.ClasspathXmlApplicationContext@19c26f5]; startup date [Mon Mar 12 15:41:10 CST 2012]; root of context hierarchy 2012-3-12 15:41:10 org.springframework.beans.factory.xml.XmlBeanDeFinitionReader loadBeanDeFinitions 信息: Loading XML bean deFinitions from path resource [beans.xml] 2012-3-12 15:41:13 org.springframework.context.support.AbstractApplicationContext obtainFreshbeanfactory 信息: Bean factory application context [org.springframework.context.support.ClasspathXmlApplicationContext@19c26f5]: org.springframework.beans.factory.support.DefaultListablebeanfactory@4a63d8 2012-3-12 15:41:13 org.springframework.beans.factory.support.DefaultListablebeanfactory preInstantiateSingletons 信息: Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListablebeanfactory@4a63d8: defining beans [meatServiceOfFish,meatServiceOfPork,animaleServiceOfDog,animaleServiceOfCat,appBeanPostProcessor]; root of factory hierarchy 鱼肉类被初始化了 鱼肉Bean被后处理器初始化 postProcessAfterInitialization方法,被处理的Bean的名称为:meatServiceOfFish 猪肉类被初始化了 猪肉Bean被后处理器初始化 postProcessAfterInitialization方法,被处理的Bean的名称为:meatServiceOfPork 狗类被初始化了 狗类Bean被后处理器初始化 postProcessAfterInitialization方法,被处理的Bean的名称为:animaleServiceOfDog 猫类被初始化了 猫类Bean被后处理器初始化 postProcessAfterInitialization方法,被处理的Bean的名称为:animaleServiceOfCat 我是狗,我的年龄是:12,我很喜欢吃猪肉 我是猫,我的年龄是:3,我很喜欢吃鱼肉 *************手动注册BeanPostProcessor处理结果******************** 2012-3-12 15:41:13 org.springframework.beans.factory.xml.XmlBeanDeFinitionReader loadBeanDeFinitions 信息: Loading XML bean deFinitions from path resource [beans.xml] 狗类被初始化了 猪肉类被初始化了 猪肉Bean被后处理器初始化 postProcessAfterInitialization方法,被处理的Bean的名称为:meatServiceOfPork 狗类Bean被后处理器初始化 postProcessAfterInitialization方法,被处理的Bean的名称为:animaleServiceOfDog 我是狗,我的年龄是:12,我很喜欢吃猪肉 猫类被初始化了 鱼肉类被初始化了 鱼肉Bean被后处理器初始化 postProcessAfterInitialization方法,被处理的Bean的名称为:meatServiceOfFish 猫类Bean被后处理器初始化 postProcessAfterInitialization方法,被处理的Bean的名称为:animaleServiceOfCat 我是猫,我的年龄是:3,我很喜欢吃鱼肉

注册BeanPostProcessor的时候,他会全部装入容器后,在进行其他操作;

注册BeanPostProcessor的时候,系统需要什么Bean的时候,就去调用相应的Bean;手动注册的BeanPostProcessor

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐