Spring实例化Bean顺序

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>

猜你喜欢

转载自88548886.iteye.com/blog/1682243