1. 程式人生 > >分別在Tomcat,spring初始化時註冊監聽器

分別在Tomcat,spring初始化時註冊監聽器

Tomcat,spring初始化時載入自定義監聽器方法

Tomcat初始化時載入自定義監聽器方法:

  1.建立一個監聽器MyListener繼承ServletContextListener

//@Component //監聽器是web層的元件,它是tomcat例項化的,不是Spring例項化的。不能放到Spring中 
  public class MyListener implements ServletContextListener {  
      
    private UserService userService = null;//UserService中的相關邏輯  
      
    @Override  
    public void contextDestroyed(ServletContextEvent event) {  
  
    }  
  
    @Override  
    public void contextInitialized(ServletContextEvent event) {  
   專案在啟動時,把Spring配置檔案通過Spring的監聽器載入,儲存到ServletContext中,我們只要在ServletContext中獲取即可。  
        ApplicationContext context = (ApplicationContext) event.getServletContext()  
                                             .getAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE);  
        userService = (UserService) context.getBean("UserService");  
        System.out.println(userService);   
    }  
  
}  、

         2.並在web.xml中配置該監聽器:

這是tomcat載入spring容器的配置:
 <listener>
  <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>
  
  <context-param>
  <param-name>contextConfigLocation</param-name>
  <param-value>classpath:beans.xml</param-value>
  </context-param>

而載入我們自定義監聽器也需要配置在web.xml中

<listener>
  <listener-class>com.listener.MyListener</listener-class>
  </listener>

 2.載入spring監聽器方法

@Component//由載入spring容器時例項化該監聽器
public class CreateDefaultAdminListener implements
ApplicationListener<ContextRefreshedEvent> {
@Autowired
private LoginService loginService;


@Override
public void onApplicationEvent(ContextRefreshedEvent event) {
if(!loginService.hasAdmin()){
loginService.createDefaultAdmin();
}
}
}、

相關推薦

分別Tomcatspring初始註冊監聽器

Tomcat,spring初始化時載入自定義監聽器方法 Tomcat初始化時載入自定義監聽器方法:   1.建立一個監聽器MyListener繼承ServletContextListener //@Component //監聽器是web層的元件,它是tomcat例項化的,

隨web容器啟動Java類spring初始某個類的方法

之前有篇文章講過隨web容器啟動某個Java類的某個方法的實現,具體有兩種方式,參考原文章:http://blog.csdn.net/u010523770/article/details/44677447 但是在我的web專案中遇到了這樣一個問題,我在需要隨web容器的類的方法中加入了一個while(true

Java Web系統初始從資料庫中載入資料到文字(ibatisspring

有一些特殊情況,需要在系統初始化時載入一些配置屬性到本地文字中 web.xml <listener> <listener-class> org.springfra

結構體中的指標用malloc初始沒有分配足夠的記憶體空間造成下述錯誤

      對結構體中的指標,初始化和釋放,遇到堆損壞問題(附連結點選開啟連結)點選開啟連結) out_defect.texturing = (TEXTURING *)malloc(sizeof(TEXTURING

spring配置quartz定時任務支援初始執行迴圈執行定點執行等

Spring配置quartz的方式有註解的方式和配置檔案的方式,今天主要說使用配置檔案的方式來實現初始化執行和定點執行 第一步,在pom.xml配置jar包依賴 <!-- 新加quartz依賴 --> <dependency>

Spring例項各種初始方法執行順序

帶序號的步驟來自Spring實戰(第4版),紅字為補充部分。 1.Spring對bean進行例項化; Constructor構造方法 2.Spring將值和bean的引用注入到bean對應的屬性中; 3.如果bean實現了BeanNameAware介面,Spring將bean的ID傳遞給

Java執行環境初始出現錯誤你可能需要重灌Flash

安裝了Adobe Flash CS4的版本,由於是漢化綠化版,再加之之前一直用慣了flash8.0,很不習慣的是他的操作介面,特別可惡的是經常出現假死狀態。於是放棄這個版本,安裝了CS3的,畢竟8.0版的ActionScript 2.0已經逐漸被拋棄。3.0的已經在很大程度上

spring初始訪問資料庫載入資料

背景:在實際開發中,通常伺服器都很多,每臺伺服器上的應用都需要配置引數,如果有修改或者變動就會很麻煩,每臺伺服器都需要改一次。所以有必要把一些引數配置到資料庫裡,這樣方便檢視和管理,這就需要初始化時載入資料庫方案一:(1)寫一個類,實現spring中的Initializing

Spring 中容器初始呼叫的介面類

  在日常開發中難免會經常遇到這樣的應用場景,在專案初始化時執行指定的程式碼實現一些功能,或者在專案啟動後執行一些程式碼實現功能。這個時候就需要用到Spring提供的一些介面、註解了。本文都是以SpringBoot為基礎。 1.Spring容器啟動前執行    1.1介面

spring原始碼(一) springmvc啟動過程springmvc初始過程

spring mvc配置 我們知道要想使用springmvc,一般需要配置如下 web.xml中配置ContextLoaderListener來載入spring根配置檔案。 <web-app> <context-param&g

請問怎麼解決:測試連線失敗因為初始提供程式發生錯誤

今天在用 BExportDoc V1.0 For MySQL(MySQL資料庫表結構匯出器)這個工具的時候遇到一個問題,測試連線的時候,出現了錯誤,尋求博友指導一下: 首先我已經安裝好了mysql-connector-odbc(ODBC資料來源管理器),已連線成

reat + cesium。 實現 初始自動定位鼠標移動實時展示坐標及視角高度 淹沒分析

action mars extend mov sce 初始 globe 設置 定位 只貼實現淹沒分析這塊的代碼。 import styles from ‘./cesium.less‘; import React from ‘react‘; import Cesiu

C++構造函數對類成員變量初始使用初始列表和構造函數內部直接賦值 的差別

初始化列表 不能 構造 調用 ron 二次 art size strong 初始化和賦值對內置類型的成員沒有什麽大的差別,像任一個構造函數都能夠。但有的時候必須用帶有初始化列表的構造函數: (1) 成員類型是沒有默認構造函數的類。若沒有提供顯式初始化時,則編譯器隱式

C#數據沒初始使用會報錯可以初始null

rgs send protect null new 報錯 tar sender ted protected void Page_Load(object sender, EventArgs e) {   string[] A;      if (B== 0)

c++靜態成員變量初始不受訪問權限控制

靜態成員 col stat name code new clas getname return 1、要在類外初始化,const 成員變量才能在類內初始化 2、初始化在類外,而不在main函數內 1 class A{ 2 private: 3 string n

資產模型數據初始應註意的事項

date 行數 span badi 激活 資產 html 行數據 .com 資產模型建立之後,在數據初始化上有個比較特殊的地方,需要激活一個BADI,然後按順序初始化數據。 1. 要AA11和AA12保證抽數時的增量提取間隔和總賬行一致。 2. 數據

C# Newtonsoft.Json JObject移除屬性在序列忽略

-h 大小 reac plain bsp source images too 實例 原文 C# Newtonsoft.Json JObject移除屬性,在序列化時忽略 一、針對 單個 對象移除屬性,序列化時忽略處理 JObject實例的 Remove() 方法,可以在

Spring初始過程到AOP

should aop amp 切點 reg 遞歸調用 finish pes auto 初始化過程 public void refresh() throws BeansException, IllegalStateException { synchro

Java 中 HashMap 初始賦值

lec SM 解決 道理 test ack 增加 數據結構 解決辦法 1、HashMap 初始化的文藝寫法HashMap 是一種常用的數據結構,一般用來做數據字典或者 Hash 查找的容器。普通青年一般會這麽初始化:HashMap<String, S

LeetCode44. Wildcard Matching (DP注意初始

Given an input string (s) and a pattern (p), implement wildcard pattern matching with support for '?' and '*'. '?' Matches any single character.