执行顺序:
静态代码块 > 构造方法 > BeanFactoryAware > ApplicationContextAware > @PostConstruct > InitializingBean > InstantiationAwareBeanPostProcessor > BeanPostProcessor > ApplicationRunner
/*** 执行顺序:* 静态代码块 > 构造方法 > BeanFactoryAware > ApplicationContextAware > @PostConstruct > InitializingBean > InstantiationAwareBeanPostProcessor > BeanPostProcessor > ApplicationRunner* */
@Component
public class BeanPostProcessorTest implements BeanPostProcessor, InitializingBean, BeanFactoryAware, ApplicationContextAware, InstantiationAwareBeanPostProcessor, ApplicationRunner {static Integer count = 1;public BeanPostProcessorTest(){System.out.println(count++ + "构造函数初始化...");}static {System.out.println(count++ + "静态代码块...");}@PostConstructpublic void init(){System.out.println(count++ + "PostConstruct...");}@Overridepublic Object postProcessBeforeInstantiation(Class<?> beanClass, String beanName) throws BeansException {System.out.println(count++ + "InstantiationAwareBeanPostProcessor-> postProcessBeforeInstantiation...");return InstantiationAwareBeanPostProcessor.super.postProcessBeforeInstantiation(beanClass, beanName);}@Overridepublic boolean postProcessAfterInstantiation(Object bean, String beanName) throws BeansException {System.out.println(count++ + "InstantiationAwareBeanPostProcessor-> postProcessAfterInstantiation...");return InstantiationAwareBeanPostProcessor.super.postProcessAfterInstantiation(bean, beanName);}@Overridepublic Object postProcessBeforeInitialization(Object bean, String beanName) {// 在 Bean 初始化之前添加逻辑System.out.println(count++ + "BeanPostProcessor-> postProcessBeforeInitialization...");return bean; // 返回原始或修改后的 Bean}@Overridepublic Object postProcessAfterInitialization(Object bean, String beanName) {System.out.println(count++ + "BeanPostProcessor-> postProcessAfterInitialization...");// 在 Bean 初始化之后添加逻辑return bean; // 返回原始或修改后的 Bean}@Overridepublic void setBeanFactory(BeanFactory beanFactory) throws BeansException {System.out.println(count++ + "BeanFactoryAware-> setBeanFactory...");}@Overridepublic void afterPropertiesSet() throws Exception {System.out.println(count++ + "InitializingBean-> afterPropertiesSet...");}@Overridepublic void setApplicationContext(ApplicationContext applicationContext) throws BeansException {System.out.println(count++ + "ApplicationContext-> setApplicationContext...");}@Overridepublic void run(ApplicationArguments args) throws Exception {System.out.println(count++ + "ApplicationRunner-> run...");}
}