package com.example.demo.configuration;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.BeanFactoryPostProcessor;
import org.springframework.beans.factory.config.BeanPostProcessor;
import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
@Slf4j
public class PostProcessorConfig {
@Bean
public static BeanPostProcessor beanPostProcessor() {
return new BeanPostProcessor() {
@Override
public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
log.info("before bean: {}", beanName);
return bean;
}
@Override
public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
log.info("after bean: {}", beanName);
return bean;
}
};
}
@Bean
public static BeanFactoryPostProcessor beanFactoryPostProcessor() {
return new BeanFactoryPostProcessor() {
@Override
public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException {
log.info("BeanFactoryPostProcessor created by static @Bean method!!!");
}
};
}
}
2022-10-05 15:43:55.469 INFO 2156 --- [ main] c.e.d.configuration.PostProcessorConfig : BeanFactoryPostProcessor created by static @Bean method!!!
2022-10-05 15:43:55.531 INFO 2156 --- [ main] c.e.d.configuration.PostProcessorConfig : before bean: org.springframework.boot.autoconfigure.web.servlet.ServletWebServerFactoryConfiguration$EmbeddedTomcat
2022-10-05 15:43:55.532 INFO 2156 --- [ main] c.e.d.configuration.PostProcessorConfig : after bean: org.springframework.boot.autoconfigure.web.servlet.ServletWebServerFactoryConfiguration$EmbeddedTomcat