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 MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供了构建 Web 应用...Spring MVC 分离了控制器、模型对象、分派器以及处理程序对象的角色,这种分离让它们更容易进行定制。
Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供了构建 Web 应用...Spring MVC 分离了控制器、模型对象、分派器以及处理程序对象的角色,这种分离让它们更容易进行定制。
ApplicationContext 除了具备如 BeanFactory 基本的容器管理功能之外,并支援更多应用程式框架的特性,像是资源的取得、讯息解析、事件的处理与传播。 Resource 的取得 解析文字讯息 倾听事件 ...
在Step3到Step5的例子中,我们将利用Spring.net提供的Ioc框架,轻松完 成解耦以及系统改造等工作。 一、类之间的依赖 我们的第一个例子主要用于说明程序的基本构造,并且作为一个反面典型,引出为什么要解耦,以及...
Spring5 是一个重要的版本,距离Spring...随着 Java、JavaEE 和其他一些框架基准版本的增加,SpringFramework5 取消了对几个框架的支持。例如: Portlet Velocity JasperReports XMLBeans JDO Guava
spring,spring mvc,mybatis,maven,mySql 项目框架
开发者可以自定义事件类和事件监听器,并通过应用程序上下文的publishEvent方法来发布事件,Spring框架会自动分发事件给所有对该事件感兴趣的监听器进行处理。事件监听机制帮助开发者更好地解耦代码,提高应用程序的...
框架使用spring、hibernate作为后台技术,使用spring mvc强大功能替换struts处理,前台使用jquery组件各种显示效果 美观,框架搭建成熟,含 过滤器、国际化等。杜绝劣质代码,只提供优质源码!
Spring框架作为Java开发的核心,其事件监听机制是理解和利用Spring的关键要素之一。这种机制基于观察者模式,由事件(ApplicationEvent)、事件监听器(ApplicationListener)和事件广播器...
Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。Spring MVC4是当前zuixin的版本,在众多特性上有了进一步的提升。, 在精通Spring MVC4中,我们将会从头开始构建一个有用的Web应用。本书共计10章,分别介绍了...
这就是一个Spring cloud 中组件之一的euerka,实现了高可用与服务验证。 具体介绍:https://my.oschina.net/bianxin/blog/1819947 user-center: 用户中心:我定义为一个生产者,为别的服务提供用户信息查询等...
针对Java Spring 框架的核心技术场景案例,AOP和事务处理部分的应用案例,涉及业务层接口万次执行效率,百度网盘密码数据兼容处理和转账业务追加日志三个案例
掌握Spring框架相关技术,学会Spring框架技术中依赖注入和面向切面编程的软件开发方法。快速熟悉相关内容,编写基于Spring框架技术的依赖注入和面向切面编程的相关代码,掌握Spring框架技术中依赖注入和面向切面编程...
Spring源代码解析(一):Spring中的事务处理 Spring源代码解析(二):ioc容器在Web容器中的启动 Spring源代码分析(三):Spring JDBC Spring源代码解析(四):Spring MVC Spring源代码解析(五):Spring AOP获取Proxy ...
Spring MVC框架围绕DispatcherServlet设计。由DispatcherServlet接受所有的请求,并调用适当的控制器(Controller)来处理相应的请求
编程语言+JAVAspring+MVC框架+...它介绍了JAVAspring的MVC框架的概念、原理和作用,以及如何使用JAVAspring的MVC框架来开发Web应用,包括控制器、模型、视图、拦截器、异常处理等内容,以及一些配置文件和注解的用法。
一般地,我们会基于Spring Cloud Stream框架来开发Streaming应用,而基于Spring Cloud Task或Spring Batch框架来开发Batch应用。完成开发后,可以打包成两种形式: (1)Springboot式的jar包,可以放在maven仓库、...
Struts : MVC 设计模式的框架. MVC : V : view 视图层 : 用户与应用程序交互的界面。 用户通过view向服务器发送请求 并查看处理结果(JSP). M : Model(模型) : 是用户业务逻辑的实现,用于处理 用户发出的各种...
C#下使用消息中间件 ActiveMQ 和Spring.NET框架开发示例