package com.test; public class User { private String name; public String getName() { return name; } public void setName(String name) { System.out.println("User类 setName方法"); this.name = name; } public void init() throws Exception { System.out.println("User类init 方法"); } public User() { System.out.println("User类构造方法"); } }
package com.test; import org.springframework.beans.BeansException; import org.springframework.beans.factory.BeanFactory; import org.springframework.beans.factory.BeanFactoryAware; import org.springframework.beans.factory.DisposableBean; import org.springframework.beans.factory.InitializingBean; import org.springframework.beans.factory.config.BeanFactoryPostProcessor; import org.springframework.beans.factory.config.BeanPostProcessor; import org.springframework.beans.factory.config.ConfigurableListableBeanFactory; public class JavaBean implements InitializingBean, DisposableBean, BeanFactoryAware, BeanPostProcessor, BeanFactoryPostProcessor { private String name; public JavaBean() { System.out.println("JavaBean类构造方法"); } @Override public void afterPropertiesSet() throws Exception { System.out.println("InitializingBean 接口 afterPropertiesSet方法"); } @Override public void destroy() throws Exception { System.out.println("DisposableBean 接口 destroy方法"); } public void init() throws Exception { System.out.println("JavaBean类init 方法"); } @Override public void setBeanFactory(BeanFactory beanFactory) throws BeansException { System.out.println("BeanFactoryAware 接口 setBeanFactory方法"); } @Override public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException { System.out.println(beanName + ":BeanPostProcessor 接口 postProcessAfterInitialization方法"); return bean; } @Override public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException { System.out.println(beanName + ":BeanPostProcessor 接口 postProcessBeforeInitialization 方法"); return bean; } public String getName() { return name; } public void setName(String name) { System.out.println("JavaBean类setName 方法"); this.name = name; } @Override public void postProcessBeanFactory( ConfigurableListableBeanFactory beanFactory) throws BeansException { System.out .println("BeanFactoryPostProcessor 接口 postProcessBeanFactory 方法"); } }
package com.test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class Test { /** * @param args */ public static void main(String[] args) { System.out.println("加载Spring配置文件"); ApplicationContext context = new ClassPathXmlApplicationContext( "spring.xml"); System.out.println("加载Spring配置文件结束"); JavaBean bean = (JavaBean) context.getBean("javaBean"); System.out.println("获取name属性:" + bean.getName()); System.out.println("程序结束"); } }
Spring.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"> <beans> <bean id="javaBean" class="com.test.JavaBean" init-method="init"> <property name="name" value="zhjb"></property> </bean> <bean id="user" class="com.test.User" init-method="init"> <property name="name" value="zhjb"> </property> </bean> </beans>