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());
    }
}
相關文章
相關標籤/搜索