最近在研究Spring 感觉不错。。。。。
ApplicationContext中的事件处理是通过ApplicationEvent
类和ApplicationListener
接口来提供的。如果在上下文中部署一个实现了ApplicationListener
接口的bean,那么每当一个ApplicationEvent
发布到ApplicationContext
时,这个bean就得到通知。
以下是一个关于Spring事件的代码。
package com.xinnuo.spring.event;
/**
* email 对象
* @author 周行
*
*/
public class Email {
private String name;
private String email;
private String subject;
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSubject() {
return subject;
}
public void setSubject(String subject) {
this.subject = subject;
}
}
package com.xinnuo.spring.event;
import org.springframework.context.ApplicationEvent;
import org.springframework.context.ApplicationListener;
/**
* 事件监听器
*
* @author 周行
*
*/
public class BlackListNotifier implements ApplicationListener {
public void onApplicationEvent(ApplicationEvent event) {
if (event instanceof BlackListEvent) {
Email email = (Email)event.getSource();
System.out.println("name:"+email.getName());
System.out.println("email:"+email.getEmail());
System.out.println("subject:"+email.getSubject());
}
}
}
package com.xinnuo.spring.event;
import org.springframework.context.ApplicationEvent;
/**
* 事件
*
* @author 周行
*
*/
public class BlackListEvent extends ApplicationEvent{
private static final long serialVersionUID = 5866734089078382009L;
public BlackListEvent(Object source) {
super(source);
}
}
package com.xinnuo.spring.event;
import java.util.List;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
/**
* @author 周行
*
*/
public class EmailBean implements ApplicationContextAware {
private List blackList;
private ApplicationContext ctx;
private Email email;
public void setEmail(Email email) {
this.email = email;
}
public void setBlackList(List blackList) {
this.blackList = blackList;
}
public void setApplicationContext(ApplicationContext ctx) {
this.ctx = ctx;
}
public void sendEmail(String address) {
if (blackList.contains(address)) {
BlackListEvent evt = new BlackListEvent(email);
//发布事件
ctx.publishEvent(evt);
return;
}
}
}
package com.xinnuo.spring.event;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;
/**
* Spring 事件测试
* @author 周行
*
*/
public class Demo {
public static void main(String[] args) {
ApplicationContext context = new FileSystemXmlApplicationContext("applicationContext.xml");
EmailBean EmailBean = (EmailBean)context.getBean("emailer");
EmailBean.sendEmail(black@list.org);
}
}
applicationContext.xml
<beans>
<bean id="emailer" class="com.xinnuo.spring.event.EmailBean" abstract="false" singleton="true" lazy-init="default" autowire="default" dependency-check="default">
<property name="blackList">
<list>
<value>black@list.org</value>
<value>white@list.org</value>
<value>john@doe.org</value>
</list>
</property>
<property name="email">
<ref bean="email" />
</property>
</bean>
<bean id="blackListListener" class="com.xinnuo.spring.event.BlackListNotifier"></bean>
<bean id="email" class="com.xinnuo.spring.event.Email" abstract="false" singleton="true" lazy-init="default" autowire="default" dependency-check="default">
<property name="name">
<value>zhouxing</value>
</property>
<property name="email">
<value>zx_zhouxing@sina.com</value>
</property>
<property name="subject">
<value>你好,欢迎光临!</value>
</property>
</bean>
</beans>
分享到:
相关推荐
技术: 1. spring事件驱动(ApplicationEventPublisher) 2. 策略模式处理事件 目的: 1. 通过event,代码逻辑异步处理 2. 通过策略模式,构建具体监听实现 3. 解耦 4. 容错(降低代码块错误风险)
spring事件的例子
SpringBoot整合RabbitMQ之Spring事件驱动模型-系统源码数据库流程图 SpringBoot整合RabbitMQ实战视频教程:https://edu.csdn.net/course/detail/9314 (感兴趣也可以加QQ联系:1974544863)
JAVA-spring学习资源之spring事件 1、spring事件发布 2、spring事件监听 3、多种不同事件方式示例
主要介绍了使用Spring事件机制实现异步的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
NULL 博文链接:https://jinnianshilongnian.iteye.com/blog/1902886
spring的mvc实例和spring的时间处理demo
Spring 事件机制代码,有效解决了软件之间的耦合 学习项目代码
Spring事件监听机制
第十七章:Spring 事件小马哥 · mercyblitzSpring 事件Java 事件/监听器编程模型面向接口的事件/监听器设计模式面向注解的事件/监听器
Spring框架作为Java开发的核心,其事件监听机制是理解和利用Spring的关键要素之一。这种机制基于观察者模式,由事件(ApplicationEvent)、事件监听器(ApplicationListener)和事件广播器...
Spring的配置以及事件注入Spring的配置以及事件注入Spring的配置以及事件注入
spring的Applicationcontext对事件的监听,在一个applicationContext范围内,实现类似MQ的效果
NULL 博文链接:https://hubowei1.iteye.com/blog/2327765
事件传播 ApplicationContext基于Observer模式(java.util包中有对应实现),提供了针对Bean的事件传 播功能。通过Application. publishEvent方法,我们可以将事件通知系统内所有的 ApplicationListener。 事件...
NULL 博文链接:https://xls9577087.iteye.com/blog/2121752
主要介绍了Spring 事件Application Event原理详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
spring容器启动和关闭时事件监听;spring容器启动和关闭时事件监听;spring容器启动和关闭时事件监听
spring发布和接收定制事件(这个上传必须要填资源分啦),ApplicationContext基于Observer模式(java.util包中有对应实现),提供了针对Bean的事件传 播功能。通过Application. publishEvent方法,我们可以将事件...
spring 事务管理:对Spring的两种事务管理方式进行详细说明,并提供与hibernate的集成,及提供了一些实际开发技巧