1 Spring
事件处理框架
通过
ApplicationEvent
类和ApplicationListener
接口,Event
事件处理会在ApplicationContext
中进行。如果一个bean
实现了ApplicationListener
接口,当ApplicationEvent
被ApplicationContext
发布时,这个bean
就会被通知。这在本质上相当于标准的观察者模式。
ApplicationContext
通过方法publishEvent()
来发布事件,该方法的参数是继承了ApplicationEvent
的事件定义类的实例。所有的监听者都会同步的接收到发布的事件,这意味着当publishEvent
()调用时程序会阻塞,直到所有的监听者都处理完毕(也可能通过实现ApplicationEventMulticaster
来提供一个交替的事件发布策略,Spring
的
SimpleApplicationEventMulticaster
是他的一个实现,内部使用
TaskExecutor
以多线程的方式异步调用事件监听
)。如果有事物上下文,监听者的事务会处在发布者的事物当中。
以下是一个实例:
事件定义类
public
abstract
class
BlackListEvent
extends
ApplicationEvent
{
public
BlackListEvent(Object
source) {
super
(source);
}
public
final
Black
get
Black
() {
return
(
Black
)getSource();
}
}
事件发布类:
public class EmailBean implements ApplicationContextAware
{
private List blackList;
private ApplicationContext ctx;
public void
setBlackList(List blackList) {
this.blackList
= blackList;
}
public void setApplicationContext(ApplicationContext
ctx) {
this.ctx =
ctx;
}
public void
sendEmail(String address, String text) {
if
(blackList.contains(address)) {
Black
black=new
Black(address, text);
BlackListEvent
event = new
BlackListEvent(black);
ctx.publishEvent(event);
}
// send
email...
}
}
事件监听类:
public class BlackListNotifier implements
ApplicationListener {
private String notificationAddress;
public void
setNotificationAddress(String notificationAddress) {
this.notificationAddress
= notificationAddress;
}
public void
onApplicationEvent(ApplicationEvent event) {
if (event
instanceof BlackListEvent) {
// notify
appropriate person...
}
}
}
bean
配置文件:
<bean id="emailer"
class="example.EmailBean">
<property
name="blackList">
<list>
<value>black@list.org</value>
<value>white@list.org</value>
<value>john@doe.org</value>
</list>
</property>
</bean>
<bean id="blackListListener"
class="example.BlackListNotifier">
<property
name="notificationAddress" value="spam@list.org"/>
</bean>
2
后续问题
Aop
替代:与
aop
实现方式的比较。(减小耦合)
同步事件:可以处理
before
,
after
等事件。(
spring
为同步)
异步事件:事件异步处理框架
,
考虑事务问题。
事件监听管理:集中管理还是分散管理(不同的设计方式)
集中管理优点:方便查找事件监听,利于维护
分散管理:
更高程度上解耦
分享到:
相关推荐
Spring Batch是一个开源的轻量级批处理框架,它提供了一整套可复用的组件,用于构建健壮且高效的批处理应用程序。由于信息给定的【部分内容】并没有提供实际的技术细节,因此我将基于Spring Batch框架本身,详细介绍...
在Spring框架中,事件处理是一种重要的通信机制,它允许组件之间进行解耦的通信。Spring事件处理基于发布/订阅模式,其中事件是消息的载体,而事件监听器则是对这些消息感兴趣的订阅者。在这个场景中,我们将探讨...
SpringCloud是中国Java开发者广泛使用的微服务框架之一,它基于Netflix OSS构建,提供了众多服务治理功能,如服务发现、负载均衡、断路器、配置中心、API Gateway等,旨在简化分布式系统开发。本压缩包文件“Spring...
- `spring-context`:扩展了`spring-beans`,提供了上下文支持,如事件发布、国际化和资源访问等功能。 - `spring-aop`:实现了AOP框架,支持切点表达式、通知类型和代理模式。 - `spring-web`:提供了Web相关的支持...
《Spring框架开发参考中文手册》是一本专门为Java开发者设计的指南,旨在帮助他们深入理解和熟练运用Spring框架进行软件开发。Spring作为Java企业级应用开发的主流框架,以其强大的功能、灵活的设计和广泛的社区支持...
**基于Spring的Web框架使用说明** Spring框架是Java开发中广泛应用的一个开源框架,以其轻量级、模块化和强大的依赖注入特性而闻名。本指南将深入探讨如何在Web开发中利用Spring框架,以及如何通过其核心特性提升...
6. **EventBus和Publish/Subscribe模式**:Spring的事件驱动模型可以和Android的EventBus库结合,实现组件之间的松耦合通信,让代码结构更加清晰。 7. **Spring Cloud for Android**:虽然不直接包含在Spring for ...
在SSM框架中,Spring MVC负责处理HTTP请求,将请求转发给Spring管理的Service层,Service层利用Spring的DI特性,注入需要的数据访问对象(DAO)。DAO层通常由MyBatis实现,执行SQL语句并与数据库交互。Service层处理...
Spring框架是Java开发中最常用的轻量级开源框架之一,它以其强大的依赖注入(Dependency Injection,DI)和面向切面编程(Aspect-Oriented Programming,AOP)能力而著名。SSH框架则是Spring、Struts和Hibernate三个...
6. **Spring Cloud Bus**:事件、消息总线。它可以用来广播配置更改,也可以在服务间传递消息,实现分布式系统间的通信。 7. **Spring Cloud Gateway**:Spring Cloud的新一代API网关,替代了原有的Zuul,提供更...
Spring框架支持事件驱动编程模型,通过`ApplicationEvent`和`ApplicationListener`接口,可以让不同组件之间通过发布和订阅事件进行通信,而不必直接耦合。 7. **数据访问** 尽管Android通常使用SQLite数据库,但...
1. 配置Spring:创建Spring配置文件,定义Bean,如DataSource、SqlSessionFactory、Mapper接口的实现类等,并使用Spring的AOP来处理事务。 2. 集成MyBatis:配置MyBatis的主配置文件,包括数据源、事务管理器、...
2. **Spring上下文**:为Spring框架提供上下文信息,是基于核心容器的抽象,提供了更强大的功能,如国际化支持、事件传播、资源加载和验证机制等。 3. **Spring AOP**:将面向切面的编程功能集成到Spring框架中,为...
Spring框架是中国Java开发领域中的一个核心支柱,它以其强大的功能和灵活性深受开发者喜爱。这个压缩包包含的是Spring框架的核心JAR文件,对于任何Java开发者,尤其是那些致力于企业级应用开发的人来说,这些都是必...
Struts2、Spring和Hibernate是Java Web开发中的三大主流框架,它们各自负责应用程序的不同层面,协同工作可以构建出高效、可维护的复杂Web应用。在本资源中,"struts2 spring hibernate框架技术与项目实战 光盘源码 ...
Spring框架是Java开发中最常用的轻量级框架之一,它的核心组件包括了多个jar包,如Spring-expression、Spring-beans、Spring-context以及Spring-core等。这些jar包分别承载着Spring框架的关键功能,使得开发者能够...