监听上下文事件
要监听上下文事件,bean应该实现ApplicationListener接口,该接口只有一个方法onApplicationEvent()。因此,让我们编写一个示例,以查看事件如何传播以及如何根据某些事件将代码放入执行所需任务的过程。
假设我们拥有一个运行良好的Eclipse IDE,并采取以下步骤来创建一个Spring应用程序:
- 创建一个名称为SpringExample的项目,并在创建的项目的src文件夹下创建一个包com.jc2182
- 使用“添加外部JAR”选项添加所需的Spring库,如“Spring Hello World示例”一章中所述。
- 在com.jc2182包下创建Java类HelloWorld,CStartEventHandler,CStopEventHandler 和 MainApp。
- 在src文件夹下创建Beans配置文件Beans.xml。
- 最后一步是创建所有Java文件和Bean配置文件的内容,然后按以下说明运行应用程序。
以下是HelloWorld.java内容。
package com.jc2182;
public class HelloWorld {
private String message;
public void setMessage(String message){
this.message = message;
}
public void getMessage(){
System.out.println("Your Message : " + message);
}
}
以下是CStartEventHandler.java文件的内容
package com.jc2182;
import org.springframework.context.ApplicationListener;
import org.springframework.context.event.ContextStartedEvent;
public class CStartEventHandler
implements ApplicationListener<ContextStartedEvent>{
public void onApplicationEvent(ContextStartedEvent event) {
System.out.println("ContextStartedEvent Received");
}
}
以下是CStopEventHandler.java文件的内容
package com.jc2182;
import org.springframework.context.ApplicationListener;
import org.springframework.context.event.ContextStoppedEvent;
public class CStopEventHandler
implements ApplicationListener<ContextStoppedEvent>{
public void onApplicationEvent(ContextStoppedEvent event) {
System.out.println("ContextStoppedEvent Received");
}
}
以下是MainApp.java文件的内容
package com.jc2182;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class MainApp {
public static void main(String[] args) {
ConfigurableApplicationContext context =
new ClassPathXmlApplicationContext("Beans.xml");
// Let us raise a start event.
context.start();
HelloWorld obj = (HelloWorld) context.getBean("helloWorld");
obj.getMessage();
// Let us raise a stop event.
context.stop();
}
}
以下是配置文件Beans.xml
<?xml version = "1.0" encoding = "UTF-8"?>
<beans xmlns = "http://www.springframework.org/schema/beans"
xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation = "http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
<bean id = "helloWorld" class = "com.jc2182.HelloWorld">
<property name = "message" value = "Hello World!"/>
</bean>
<bean id = "cStartEventHandler" class = "com.jc2182.CStartEventHandler"/>
<bean id = "cStopEventHandler" class = "com.jc2182.CStopEventHandler"/>
</beans>
创建完所有源文件并添加所需的其他库后,让我们运行该应用程序。它将显示以下消息:
ContextStartedEvent Received
Your Message : Hello World!
ContextStoppedEvent Received