这个接口根据版本不同,spring的接口里写的有区别,历史的没有default,高版本的会有default和@Nullable,接口里有俩方法,一个前置方法,一个后置方法
1、在bean初始化之前执行
2、在bean的初始化之后执行
这个接口有啥用,你可以写一个class实现这个接口,然后这俩接口参数都一样,bean和beanName,bean就是注入的class,可以判断下bean是哪个class然后做你自己的操作
package com.example.demo.configuration;
import com.example.demo.entity.User;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.BeanPostProcessor;
import org.springframework.context.annotation.Configuration;
/**
* @version 1.0
* @author: 奥特曼
* @date: 2021-09-16 16:08
*/
@Configuration // 这里可以换成@Component 区别自行百度
public class BeanPostProcessorConfiguration implements BeanPostProcessor {
@Override
public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
System.out.println("注入前" + beanName);
return bean;
}
@Override
public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
if (bean instanceof User){
// do something
}
System.out.println("注入后" + beanName);
return bean;
}
}