我们如何在Spring中记录每个bean实例化?
有办法吗?
答案 0 :(得分:1)
您可以使用BeanPostProcessor
@Component
public class LogBeanPostProcessor implements BeanPostProcessor {
@Override
public Object postProcessBeforeInitialization(Object bean, String beanName)
throws BeansException {
return bean;
}
@Override
public Object postProcessAfterInitialization(Object bean, String beanName)
throws BeansException {
LOGGER.log(String.format("Bean instantiated with name %s and class %s", beanName, bean.getClass().getSimpleName()));
return bean;
}
}
答案 1 :(得分:0)
您可以使用Spring的事件监听器(解释here)来监听事件。我相信您需要倾听的事件是ContextRefreshedEvent
,例如:
@Component
public class MyListener
implements ApplicationListener<ContextRefreshedEvent> {
public void onApplicationEvent(ContextRefreshedEvent event) {
...
}
}
答案 2 :(得分:0)
尝试将org.springframework.beans.factory
的日志记录级别设置为TRACE
或DEBUG
。
我使用log4j2和xml配置:
<logger name="org.springframework.beans.factory" level="trace"/>