第一步:编写自定义监听器
/** * 监听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) {} }
<listener> <listener-class>cn.dintalk.web.listeners.ServletContextAttributeListenerImpl</listener-class> </listener>
如此,我们便可观察Spring容器中Bean实例创建的情况了。
关注微信公众号,随时随地学习