SSM框架中 自定义 Listener

第一步、web.xml 配置web

<listener>
  <listener-class>com.jeeplus.modules.sys.listener.WebContextListener</listener-class>
</listener>
<listener>
  <listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
</listener>
<!-- 自定义listener 必须配置放在 ContextLoaderListener 以后-->
<listener>
  <listener-class>com.jeeplus.modules.sys.listener.MyContextListener</listener-class>
</listener>

第二步、自定义 listenerspring

public class MyContextListener implements ServletContextListener {

   @Override
   public void contextInitialized(ServletContextEvent sce) {
      System.out.println("=========自定义 listenr=======");
      //注入 AnsCustBasicDao ,不能经过 注解方式注入
        AnsCustBasicDao ansCustBasicDao= WebApplicationContextUtils.getWebApplicationContext(sce.getServletContext()).getBean(AnsCustBasicDao.class);
        AnsCustBasic ansCustBasic= ansCustBasicDao.get("1d225dd66ca64f34a9ef272b2ce589ae");
        System.out.println("在自定义 listen 中获取用户信息:"+ansCustBasic.toString());

   }

   @Override
   public void contextDestroyed(ServletContextEvent servletContextEvent) {

   }
}

注意:在自定义 listener 中若是须要使用 spring 容器中的 bean ,不能够直接  @Autowired  tomcat

(1) Listener的生命周期是由servlet容器(例如tomcat)管理的,项目启动时上例中的ConfigListener是由servlet容器实例化并调用其contextInitialized方法,而servlet容器并不认得@Autowired注解,所以致使ConfigService实例注入失败ide

(2) 而spring容器中的bean的生命周期是由spring容器管理的工具

这就须要用到spring为咱们提供的WebApplicationContextUtils工具类,该工具类的做用是获取到spring容器的引用,进而获取到咱们须要的bean实例。xml

 

若是只是做为自定义启动类的话,还有另一种方法,就是 实现 InitializingBean 接口,重写其中的方法 afterPropertiesSet( ),实现效果是同样接口

@Component
public class MyContextListener2 implements InitializingBean {

    @Autowired
    private AnsCustBasicDao ansCustBasicDao;

    @Override
    public void afterPropertiesSet() throws Exception {
        System.out.println("自定义 listener  实现 InitializingBean 接口");
        AnsCustBasic ansCustBasic= ansCustBasicDao.get("1d225dd66ca64f34a9ef272b2ce589ae");
        System.out.println("自定义 listener  实现 InitializingBean 接口获取用户信息:"+ansCustBasic.toString());
    }
}
相关文章
相关标签/搜索