1. 程式人生 > >spring 容器啟動和關閉執行某個動作 ApplicationContext

spring 容器啟動和關閉執行某個動作 ApplicationContext

在Spring中已經定義了五個標準事件,分別介紹如下: 

1)ContextRefreshedEvent:當ApplicationContext初始化或者重新整理時觸發該事件。 

2)ContextClosedEvent:當ApplicationContext被關閉時觸發該事件。容器被關閉時,其管理的所有單例Bean都被銷燬。 

3) RequestHandleEvent:在Web應用中,當一個http請求(request)結束觸發該事件。 
ContestStartedEvent:Spring2.5新增的事件,當容器呼叫ConfigurableApplicationContext的Start()方法開始/重新開始容器時觸發該事件。 


5)ContestStopedEvent:Spring2.5新增的事件,當容器呼叫ConfigurableApplicationContext的Stop()方法停止容器時觸發該事件。 

下面通過一個例子展示如何處理Spring內定的事件(例程3.8)。建立一個Java工程,新增Spring開發能力後,新建ioc.test包。在包中新建ApplicationEventListener類,實現ApplicationListener介面,在onApplicationEvent()方法中新增事件處理程式碼,如下: 

package com.tomcat360.p2p.util;

import org.springframework.context.ApplicationEvent;
import org.springframework.context.ApplicationListener;
import org.springframework.context.event.ContextClosedEvent;
import org.springframework.context.event.ContextRefreshedEvent;
import org.springframework.context.event.ContextStartedEvent;
import org.springframework.context.event.ContextStoppedEvent;

public class T implements ApplicationListener<ApplicationEvent>{

	@Override
	public void onApplicationEvent(ApplicationEvent event) {
		
		    if(event instanceof ContextClosedEvent ){  
		       System.out.println(event.getClass().getSimpleName()+" 事件已發生!");      
		      }else if(event instanceof ContextRefreshedEvent ){
		          System.out.println(event.getClass().getSimpleName()+" 事件已發生!");      
		      }else if(event instanceof ContextStartedEvent ){  
		           System.out.println(event.getClass().getSimpleName()+" 事件已發生!");  
		      }else if(event instanceof ContextStoppedEvent){  
		          System.out.println(event.getClass().getSimpleName()+" 事件已發生!");  
		      }else{  
		          System.out.println("有其它事件發生:"+event.getClass().getName());  
		    } 
	}

}
在Spring配置檔案中定義一個Bean,類為ApplicationEventListener,程式碼如下:

<bean id="springStartListener" class="com.tomcat360.p2p.util.T"></bean>

相關推薦

spring 容器啟動關閉執行某個動作 ApplicationContext

在Spring中已經定義了五個標準事件,分別介紹如下: 1)ContextRefreshedEvent:當ApplicationContext初始化或者重新整理時觸發該事件。 2)ContextClosedEvent:當ApplicationContext被關閉時觸發該事件

Web 專案啟動關閉執行某個方法

一、web.xml配置 <listener>       <listener-class>com.servlet.InitListener</listener-class> </listener>      com.se

Spring容器初始化後執行某個指定的方法

1.配置springmvc.xml <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://ww

spring容器啟動事件關閉事件

啟動事件 實現ApplicationListener ContextRefreshedEvent @Service public class StartAddDataListener i

Spring的Bean生命週期內的callback方法Spring容器啟動關閉時的callback方法

通過Spring管理的bean,在其生命週期內可以配置被Spring呼叫的callback方法一般有兩種:通過實現Spring提供的特點介面和通過配置callback方法.(如果bean是prototype的話,由於其銷燬不被Spring管理,其銷燬方法不會被呼叫) 1,通

spring容器初始化之後執行某些系統初始化動作

最近自己所在的專案中出現此種情形:專案啟動後,需要做一些初始化動作,如,讀取配置檔案、查詢資料庫資料存入快取等。參考前人寫的程式碼的實現方式如下: 思路:編寫一個系統初始化類,該類實現ServletContextListenner介面,並實現contextInitializ

Oracle12cr1新特性之容器資料庫(CDB)可插拔資料庫(PDB) 的啟動關閉

Oracle12c中引入的多宿主選項(multitenant option)允許一個容器資料庫容納多個獨立的可插拔資料庫(PDB)。本文將說明如何啟動和關閉容器資料庫(CDB)和可插拔資料庫(PDB)。 1.   容器資料庫(CDB) 啟動和關閉容器資料庫和以往一樣。當

spring容器啟動之我見(四、獲取容器獲取容器中的bean)

1.我們經常會發現在我們的service中有註解而在dao上沒有註解 看圖 因為我們在spring容器初始化bean的時候,是把service當做一個bean ,而dao並不是一個bean,這是個人理解,如果有錯誤,歡迎大家指出。 2. 那我們總結一下那些算是spri

Spring容器啟動後注入service到Servlet並自動執行

以下內容摘取自網路,其中有部分沒說清楚,這邊加以說明 通常做法是定義一個Servlet,並在web.xml中配置Servlet的啟動順序<load-on-startup>的值在DispatcherServlet之後。但這樣做的缺點是在Servlet中無法使用

Spring MVC讓Web容器啟動時自動執行程式碼

在web.xml中,對於每一個servlet都有一個load-on-startup屬性,其值為一個整數。若該值為0或正整數,則當Web容器啟動時,該servlet會自動載入,並呼叫其中的init()方

Linux啟動關閉時自動執行的所有指令碼檔案

原文地址:http://www.cnblogs.com/armlinux/archive/2010/08/11/2390949.html      Linux使用的是基於執行級(run-levels)概念的稱為SysVinit的專用啟動工具。SysVinit(從現在開始我

Spring容器啟動過程

spring啟動搞了一年多的Java了,每個項目都在用Spring,這幾天沒事看了看Spring源碼,總結了下Spring容器的啟動過程,想把它記錄下來,免得忘了spring容器的啟動方式有兩種:1、自己提供ApplicationContext自己創建Spring容器2、Web項目中在web.xml中配置監聽

mysql啟動關閉外鍵約束的方法

word nbsp 查看 set 外鍵約束 mysql 輸入 check select 關閉外鍵約束,輸入命令:SET FOREIGN_KEY_CHECKS=0; 啟動外鍵約束,輸入命令:SET FOREIGN_KEY_CHECKS=1; 查看當前是否有外鍵約束:SELEC

Oracle啟動關閉

命令 fuse 在線 數據庫系統 .exe ssi 建立 use 控制文件 1 數據庫啟動 1.1 需要的權限 SYSDBA或者SYSOPER系統權限。 1.2 啟動的方法 SQL*Plus STARTUP command Oracle Enterprise

全文檢索ES 服務啟動關閉

eap sep ror cms nco sin head exp rac nohup ./elasticsearch & 可以後臺開啟elasticsearch服務 ps-ef列出所有進程 ps-ef | grep elastic...查找elastic。。的

單獨啟動關閉hadoop服務

hadoop、節點1)啟動名稱節點 Hadoop-daemon.sh start namenode 2) 啟動數據節點hadoop-daemons.sh start datanode slave 3)hadoop-daemon.sh start secondarynamenode 4)查看端口5007

SELinux的啟動關閉

efs 所有 能夠 mis iss har 表示 強制 兩個 1、SELinux簡介SELinux是Security Enhanced Linux的縮寫,字面上的意思就是安全強化的Linux,它是由美國國家安全局 (NSA) 開發的,整合到Linux核心的一個模塊,是對於強

mysql 啟動關閉外鍵約束

ext sql 更新 set ... 避免 mysq delete 約束 在MySQL中刪除一張表或一條數據的時候,出現 [Err] 1451 -Cannot delete or update a parent row: a foreign key constrai

java----調用windows的DOS命令並回顯/啟動關閉appium

學習記錄/** * Java調用windows的DOS命令 * 實現調用Windows的ipconfig命令,然後將輸出的信息通過IO流輸出到控制臺。 * 實現啟動appium服務 * 實現關閉appium服務 */ public class Doc { public static

【oracle11g】整體啟動關閉

lsnrctl1.關閉數據庫【默認orcl】 sqlplus /nolog conn sys/sys as sysdba; shutdown immediate; --關閉所有實例 lsnrctl stop2.單獨關閉的數據庫實例,目前啟動不了了【uu】 sqlplus /nolog conn sys/