获取Spring容器中的Bean协助调试

时间:2021-09-10 10:14:28

在使用Spring进行开发时,有时调bug真的是很伤脑筋的一件事,我们可以通过自定义一个监听器来获取Spring容器中的Bean实例来协助我们调试。

第一步:编写自定义监听器

/**
* 监听servletContext域中属性发生变化的监听器
* @author Mr.Song
*/
public class ServletContextAttributeListenerImpl
implements ServletContextAttributeListener{
/**
* 存入应用域中时
* @param scab
*/
@Override
public void attributeAdded(ServletContextAttributeEvent scab) {
//1.取出ServletContext对象
ServletContext context = scab.getServletContext();
//2.取出spring的ioc容器(查看源码得知其key)
WebApplicationContext wac = (WebApplicationContext)context.getAttribute
(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE);
//3.取出所有的bean名称
String[] names = wac.getBeanDefinitionNames();
for(String name : names){
System.out.println(name);
}
}
@Override
public void attributeRemoved(ServletContextAttributeEvent scab) {}
@Override
public void attributeReplaced(ServletContextAttributeEvent scab) {}
}

第二步:在web.xml中配置监听器

<listener>
<listener-class>cn.dintalk.web.listeners.ServletContextAttributeListenerImpl</listener-class>
</listener>

如此,我们便可观察Spring容器中Bean实例创建的情况了。

关注微信公众号,随时随地学习

获取Spring容器中的Bean协助调试