spring源码-bean生命周期接口-BeanPostProcessor-01

先分析这个BeanPostProcessor 接口,是为了分析spring aop 原理做基础知识。

  • MyBeanPostProcessor

@Component
public class MyBeanPostProcessor implements BeanPostProcessor {

    private UserService userService;

    @Autowired
    public void setRoleService(UserService userService) {
        System.out.println("setter 装配.....");
        this.userService = userService;
    }

    public MyBeanPostProcessor () {
        System.out.println("构造器。。。");
    }

    /**
     * spring 在创建完成 依赖注入后调用
     * @param bean
     * @param beanName
     * @return
     * @throws BeansException
     */
    @Override
    public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
        System.out.println("postProcessBeforeInitialization。。。"+ beanName);
        return bean;
    }

    @Override
    public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
        System.out.println("postProcessAfterInitialization。。。"+ beanName);
        return bean;
    }
}

运行结果

运行结果.png

我们看到在完成对象创建已经依赖注入后会先调用postProcessBeforeInitialization,然后调用 postProcessAfterInitialization。同时,看到这个两个方法被调用了很多此,也就是所有的bean的创建装配完成后都会调用这个两个方法。在spring 中这个运用了模板方法。接下来我们去spring 的源码中探索原因。

你可能感兴趣的:(spring源码-bean生命周期接口-BeanPostProcessor-01)