1. 程式人生 > >Spring Bean的生命周期理解

Spring Bean的生命周期理解

object sdf erp println after 創建 img turn err

《Spring in action》

技術分享圖片

import org.springframework.beans.BeansException;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.BeanFactoryAware;
import org.springframework.beans.factory.BeanNameAware;
import org.springframework.beans.factory.DisposableBean;
import org.springframework.beans.factory.InitializingBean; import org.springframework.beans.factory.config.BeanPostProcessor; import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware; import org.springframework.stereotype.Component; @Component
public class MyBean implements BeanNameAware,BeanFactoryAware,ApplicationContextAware,InitializingBean,BeanPostProcessor,DisposableBean { ApplicationContext applicationContext; BeanFactory beanFactory; String beanname; String properties; public MyBean(){ System.out.println(
"MyBean 被創建了"); } @Override public void setBeanName(String name) { System.out.println("BeanNameAware的setBeanName:"+name); beanname=name; } @Override public void setBeanFactory(BeanFactory beanFactory) throws BeansException { System.out.println("BeanFactoryAware的setbeanFactory:"+beanFactory); this.beanFactory=beanFactory; } @Override public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { System.out.println("ApplicationContextAware的setApplicationContext:"+applicationContext); this.applicationContext=applicationContext; } //實現BeanPostProcessor的方法會被容器自動調用; @Override public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException { System.out.println(beanName+"開始實例化!"); return bean;//對bean處理後放回容器,如果return null 容器將沒有bean; } @Override public void afterPropertiesSet() throws Exception { properties="sdfsf"; System.out.println("InitializingBean的afterPropertiesSet!"); } @Override public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException { System.out.println(beanName+"實例化完成!"); return bean; } @Override public void destroy() throws Exception { System.out.println("Bean銷毀——destroy:"+this.toString()); } }

Spring Bean的生命周期理解