以上例子简单打印了一些spring的生命周期信息,并且有一些先后顺序。在新版本中 init method和destroy method的配置改为@PostConstruct和@PreDestroy注解配置。
BeanPostProcessor是一个扩展Spring的重要接口。
加入了一个新接口ApplicationContextAware 用户注入ApplicationContext。
public class MyBeanFactoryPostProcessor implements BeanFactoryPostProcessor { public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException { BeanDefinition beanDefinition = beanFactory.getBeanDefinition("cat"); beanDefinition.getPropertyValues().addPropertyValue("brand","奇瑞qq"); System.out.println("postProcessBeanFactory"); } }BeanFactoryPostProcessor实在最开始执行的,可以在对象实例化后,有线修改。在Bean被Spring加载后,会生成一个BeanDefinition
<bean id="cat" class="org.acy.bfc.Cat" init-method="myInit" destroy-method="myDestroy"> <property name="brand" value="奔驰"/> <property name="color" value="黑色"/> <property name="maxSpeed" value="200"/> </bean> <bean class="org.acy.bfc.MyBeanPostProcessor"/> <bean class="org.acy.bfc.MyBeanFactoryPostProcessor"/>此处配置了一些Processor,ApplicationContext在启动时候会自动加载这些Processor。