Spring原始碼解析(八)——生命週期——BeanPostProcessor在spring底層的使用
阿新 • • 發佈:2018-11-02
一、ApplicationContextAwareProcessor
import org.springframework.beans.BeansException; import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware; import org.springframework.stereotype.Component; import javax.annotation.PostConstruct; import javax.annotation.PreDestroy; @Component public class Dog implements ApplicationContextAware{ private ApplicationContext applicationContext; public Dog(){ System.out.println("dog constructor..."); } //物件建立並賦值之後呼叫 @PostConstruct public void init(){ System.out.println("
[email protected]"); } //容器移除物件之前 @PreDestroy public void detory(){ System.out.println("[email protected]"); } @Override public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { this.applicationContext = applicationContext; } }
Dog類實現ApplicationContextAware介面,以此注入spring容器。靠的就是ApplicationContextAwareProcessor。
二、BeanValidationPostProcessor
三、InitDestroyAnnotationBeanPostProcessor
還記得我們的@PostConstruce和@PreDestory兩個註解嗎?它們是怎麼實現的?
四、AutowiredAnnotationBeanPostProcessor