1. 程式人生 > >Spring原始碼解析(八)——生命週期——BeanPostProcessor在spring底層的使用

Spring原始碼解析(八)——生命週期——BeanPostProcessor在spring底層的使用

一、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