SpringBoot​​​​在初始化Bean之前和之后定制逻辑


有时,你想在Bean初始化之前和之后实现一些自己的逻辑:
BeanPostProcessor接口就可以实现。

该接口目前有两个方法:

  • postProcessBeforeInitialization。应该在初始化方法之前调用。
  • postProcessAfterInitialization。该方法在初始化方法之后被调用。

@Component
public class MyBeanPostProcessor implements BeanPostProcessor {

    @Override
    public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
        if (bean instanceof User) {
            ((User) bean).setUserName("Tom");
        }
        return bean;
    }
}

我们经常使用的注解,如@Autowired、@Value、@Resource和@PostConstruct是通过AutowiredAnnotationBeanPostProcessor和CommonAnnotationBeanPostProcessor实现的。