#Spring創建Bean的生命週期
使用一個簡單的例子執行看到springBean的加載過程
package com.sc.ynk.spring;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.BeanNameAware;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.config.BeanPostProcessor;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import javax.annotation.PostConstruct;
/**
* @author [email protected]
* @date 2018/7/1 16:49
*/
public class SpringLoad implements InitializingBean, BeanPostProcessor, BeanNameAware, ApplicationContextAware {
public SpringLoad() {
System.out.println("1 constrct SpringLoad");
}
@PostConstruct
public void set() {
System.out.println("3 beanname生成後構建整合上下文的bean");
}
@Override
public void afterPropertiesSet() throws Exception {
System.out.println("4 加載上下文的動態參數");
}
@Override
public Object postProcessBeforeInitialization(Object o, String beanName) throws BeansException {
System.out.println("postProcessBeforeInitialization beanName="+beanName);
return o;
}
@Override
public Object postProcessAfterInitialization(Object o, String beanName) throws BeansException {
System.out.println("postProcessAfterInitialization beanName="+beanName);
return o;
}
@Override
public void setBeanName(String s) {
System.out.println("2 生成設置BeanName");
}
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
System.out.println("3 將加載的所有參數放入上下文環境");
}
public void init() {
System.out.println("5 上下文生成後初始化bean中的參數");
}
}
運行後的結果和說明已經在結果中,可以看到一個好的設計就連細節都很牛逼。
1 constrct SpringLoad
2 生成設置BeanName
3 將加載的所有參數放入上下文環境
3 beanname生成後構建整合上下文的bean
4 加載上下文的動態參數
5 上下文生成後初始化bean中的參數
//-------這裏省略別的bean的postProcessBeforeInitialization和postProcessAfterInitialization調用。
postProcessBeforeInitialization beanName=com.sc.ynk.spring.TestSpring
postProcessAfterInitialization beanName=com.sc.ynk.spring.TestSpring