BeanPostProcessor example

来源:互联网 发布:天皇电影知乎 编辑:程序博客网 时间:2024/05/20 06:31

web.xml

 <bean id="contactBean1" class="com.vf.constructor.objectmatch.Contact"  init-method="init" destroy-method="destroy"> <property name="name" value="charles fels"></property></bean><bean class="com.vf.constructor.objectmatch.initBean" />

InitBean.java

package com.vf.constructor.objectmatch;import org.apache.log4j.Logger;import org.springframework.beans.BeansException;import org.springframework.beans.factory.config.BeanPostProcessor;public class InitBean implements BeanPostProcessor {/** * @param args */@Overridepublic Object postProcessBeforeInitialization(Object bean, String beanName)throws BeansException {// TODO Auto-generated method stublogger.debug("After Initialization: " + beanName);return bean;}private Logger logger = Logger.getLogger(InitBean.class.getPackage().getName());@Overridepublic Object postProcessAfterInitialization(Object bean, String beanName)throws BeansException {// TODO Auto-generated method stublogger.debug("Before Initialization:" + beanName);return bean;}}
Contact.java

package com.vf.constructor.objectmatch;import org.apache.log4j.Logger;import org.springframework.context.ApplicationContext;import org.springframework.context.support.AbstractApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;public class Contact {/** * @param args */private String name;private int age;private static Logger logger = Logger.getLogger(Contact.class.getPackage().getName());public void init() {if(name == null) {logger.debug("You are not authenticated.");throw new IllegalArgumentException ("Initialization failed.");}}public void destroy() {logger.debug("Destroying starting.");}public void setName(String name) {this.name = name;}public String getName() {return name;}public void setAge(int age) {this.age = age;}public int getAge() {return age;}public String toString() {return "Name: " + name + " Age: " + age;}public static void main(String[] args) {AbstractApplicationContext  context = new ClassPathXmlApplicationContext("web.xml");Contact contact = context.getBean("contactBean1", Contact.class);logger.debug(contact); context.close();}}DEBUG - Creating shared instance of singleton bean 'contactBean1'DEBUG - Creating instance of bean 'contactBean1'DEBUG - Eagerly caching bean 'contactBean1' to allow for resolving potential circular referencesDEBUG - After Initialization: contactBean1DEBUG - Invoking init method  'init' on bean with name 'contactBean1'DEBUG - Before Initialization:contactBean1DEBUG - Finished creating instance of bean 'contactBean1'DEBUG - Returning cached instance of singleton bean 'com.vf.constructor.objectmatch.initBean#0'DEBUG - Unable to locate LifecycleProcessor with name 'lifecycleProcessor': using default [org.springframework.context.support.DefaultLifecycleProcessor@d30557]DEBUG - Returning cached instance of singleton bean 'lifecycleProcessor'DEBUG - Returning cached instance of singleton bean 'contactBean1'DEBUG - Name: charles fels Age: 0INFO - Closing org.springframework.context.support.ClassPathXmlApplicationContext@18eabf6: startup date [Mon Apr 15 10:01:06 GMT+08:00 2013]; root of context hierarchyDEBUG - Returning cached instance of singleton bean 'lifecycleProcessor'INFO - Destroying singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@166c37e: defining beans [contactBean1,com.vf.constructor.objectmatch.initBean#0]; root of factory hierarchyDEBUG - Invoking destroy method 'destroy' on bean with name 'contactBean1'DEBUG - Destroying starting.