找到Bean在那里创建的

2020-07-18 • 预计阅读时间 1 分钟

起因

最近加入了一个项目,里面由于用了一堆starter依赖。导致各种用不用的bean都被加载进去了。一般这种情况下,在SpringBootApplication里面排除一下就可以了。有些不常用的或者以前没用过的,想要排除一下就得找到这个bean到底是在那个AutoConfiguratio中创建的了。这个时候依靠BeanPostProcessor可以找到具体是谁在作怪。

代码

@Configuration
public class LogBeanConfiguration implements BeanPostProcessor {
    Logger log = LoggerFactory.getLogger(LogBeanConfiguration.class);

    @Override
    public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
        log.info("postProcessBeforeInitialization: bean(" + beanName + ")");
        return bean;
    }

    @Override
    public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
        log.info("postProcessAfterInitialization: bean(" + beanName + ")");
        return bean;
    }
}

通过这个其实可以统计一下项目到底在启动的时候加载了多少个beanspring的机制虽好,但是也不能滥用呀……

devjavaspring

wentao

写点代码,解决点问题。

JMH介绍

技术周报#1