`
rock
  • 浏览: 56719 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

spring事件处理框架

阅读更多

 

1 Spring 事件处理框架

 

通过 ApplicationEvent 类和ApplicationListener 接口,Event 事件处理会在ApplicationContext 中进行。如果一个bean 实现了ApplicationListener 接口,当ApplicationEventApplicationContext 发布时,这个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 Batch 框架中经典的三步走策略。 快速提升数据批处理的能力:高性能、高可靠性、并行处理。

    spring框架的MVC

    Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供了构建 Web 应用...Spring MVC 分离了控制器、模型对象、分派器以及处理程序对象的角色,这种分离让它们更容易进行定制。

    spring mvc 框架示例

    Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供了构建 Web 应用...Spring MVC 分离了控制器、模型对象、分派器以及处理程序对象的角色,这种分离让它们更容易进行定制。

    开源框架 Spring Gossip

    ApplicationContext 除了具备如 BeanFactory 基本的容器管理功能之外,并支援更多应用程式框架的特性,像是资源的取得、讯息解析、事件的处理与传播。 Resource 的取得 解析文字讯息 倾听事件 ...

    Spring.net框架

    在Step3到Step5的例子中,我们将利用Spring.net提供的Ioc框架,轻松完 成解耦以及系统改造等工作。 一、类之间的依赖 我们的第一个例子主要用于说明程序的基本构造,并且作为一个反面典型,引出为什么要解耦,以及...

    Spring_Framework_ API_5.0.5 (CHM格式)

    Spring5 是一个重要的版本,距离Spring...随着 Java、JavaEE 和其他一些框架基准版本的增加,SpringFramework5 取消了对几个框架的支持。例如: Portlet Velocity JasperReports XMLBeans JDO Guava

    spring,spring mvc,mybatis,maven,mySql 项目框架

    spring,spring mvc,mybatis,maven,mySql 项目框架

    Java Spring框架面试题大全

    开发者可以自定义事件类和事件监听器,并通过应用程序上下文的publishEvent方法来发布事件,Spring框架会自动分发事件给所有对该事件感兴趣的监听器进行处理。事件监听机制帮助开发者更好地解耦代码,提高应用程序的...

    spring、hibernate后台框架及前台技术

    框架使用spring、hibernate作为后台技术,使用spring mvc强大功能替换struts处理,前台使用jquery组件各种显示效果 美观,框架搭建成熟,含 过滤器、国际化等。杜绝劣质代码,只提供优质源码!

    深入探索Spring事件监听机制:技术与应用

    Spring框架作为Java开发的核心,其事件监听机制是理解和利用Spring的关键要素之一。这种机制基于观察者模式,由事件(ApplicationEvent)、事件监听器(ApplicationListener)和事件广播器...

    精通Spring MVC 4

    Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。Spring MVC4是当前zuixin的版本,在众多特性上有了进一步的提升。, 在精通Spring MVC4中,我们将会从头开始构建一个有用的Web应用。本书共计10章,分别介绍了...

    Spring Cloud一套比较实用的基础框架

    这就是一个Spring cloud 中组件之一的euerka,实现了高可用与服务验证。 具体介绍:https://my.oschina.net/bianxin/blog/1819947 user-center: 用户中心:我定义为一个生产者,为别的服务提供用户信息查询等...

    Java框架技术 Spring 学习案例 Spring AOP案例和Spring事务处理案例

    针对Java Spring 框架的核心技术场景案例,AOP和事务处理部分的应用案例,涉及业务层接口万次执行效率,百度网盘密码数据兼容处理和转账业务追加日志三个案例

    Web框架编程-Spring框架编程

    掌握Spring框架相关技术,学会Spring框架技术中依赖注入和面向切面编程的软件开发方法。快速熟悉相关内容,编写基于Spring框架技术的依赖注入和面向切面编程的相关代码,掌握Spring框架技术中依赖注入和面向切面编程...

    spring源码分析(1-10)

    Spring源代码解析(一):Spring中的事务处理 Spring源代码解析(二):ioc容器在Web容器中的启动 Spring源代码分析(三):Spring JDBC Spring源代码解析(四):Spring MVC Spring源代码解析(五):Spring AOP获取Proxy ...

    Spring 的Web框架

    Spring MVC框架围绕DispatcherServlet设计。由DispatcherServlet接受所有的请求,并调用适当的控制器(Controller)来处理相应的请求

    编程语言+JAVAspring+MVC框架+Web开发

    编程语言+JAVAspring+MVC框架+...它介绍了JAVAspring的MVC框架的概念、原理和作用,以及如何使用JAVAspring的MVC框架来开发Web应用,包括控制器、模型、视图、拦截器、异常处理等内容,以及一些配置文件和注解的用法。

    Spring Cloud Data Flow流式和批式数据处理框架Local模式运行.docx

    一般地,我们会基于Spring Cloud Stream框架来开发Streaming应用,而基于Spring Cloud Task或Spring Batch框架来开发Batch应用。完成开发后,可以打包成两种形式: (1)Springboot式的jar包,可以放在maven仓库、...

    struts spring hibernate整合框架

    Struts : MVC 设计模式的框架. MVC : V : view 视图层 : 用户与应用程序交互的界面。 用户通过view向服务器发送请求 并查看处理结果(JSP). M : Model(模型) : 是用户业务逻辑的实现,用于处理 用户发出的各种...

    C# ActiveMQ 和Spring.NET框架开发示例

    C#下使用消息中间件 ActiveMQ 和Spring.NET框架开发示例

Global site tag (gtag.js) - Google Analytics