`
zhaoshunxin
  • 浏览: 29926 次
  • 来自: 济南
社区版块
存档分类
最新评论

Spring 采用ObServer设计模式实现事件传递

 
阅读更多
Spring 采用ObServer设置模式实现事件传递
定义自己的事件
1、实现ApplicationListener 创建事件监听
public class EventListener implements ApplicationListener
{
    private String to;

    public void setTo(String to)
    {
        this.to = to;
    }

    public void onApplicationEvent(ApplicationEvent event)
    {
        if (event instanceof ObServerEvent)
        {
            ObServerEvent ev = (ObServerEvent) event;
            System.out.println(ev.getAdress() + " send mail to " + to);
        }
    }
}
实现 ApplicationContextAware 创建观察者
public class ObServer implements ApplicationContextAware
{
    String from;

    String message;

    public String getFrom()
    {
        return from;
    }

    public void setFrom(String from)
    {
        this.from = from;
    }
继承 ApplicationEvent 实现事件
public class ObServerEvent extends ApplicationEvent
{
    private String adress;

    private String text;

    public ObServerEvent(Object source, String address, String text)
    {
        super(source);
        this.adress = address;
        this.text = text;
    }

    public String getAdress()
    {
        return adress;
    }

    public String getText()
    {
        return text;
    }

    /**
     * 
     */
    private static final long serialVersionUID = 1L;

}

    public String getMessage()
    {
        return message;
    }

    public void setMessage(String message)
    {
        this.message = message;
    }

    private ApplicationContext ctx;

    public void setApplicationContext(ApplicationContext ctx)
            throws BeansException
    {
        this.ctx = ctx;
    }

    public void sendMail()
    {
        ObServerEvent event = new ObServerEvent(this, from, message);
        ctx.publishEvent(event);
    }
}

applicationContext.xml
<bean id="obServer" class="observer.ObServer">
	<property name="from"><value>A</value>
	</property>
	<property name="message"><value>XXXXXX</value>
</bean>
<bean id="eventListener" class="observer.EventListener">
	<property name="to">
		<value>B</value>
	</property>
</bean>

测试
ObServer eventBean = (ObServer) context.getBean("obServer");
eventBean.sendMail();

分享到:
评论

相关推荐

    第四章:Spring AOP API 设计模式1

    【Spring AOP设计模式】是Spring框架中面向切面编程的重要组成部分,它允许开发者通过分离关注点来解耦代码,实现灵活的模块化设计。在本章中,我们将探讨17种设计模式在Spring AOP中的应用和实现,以及它们如何帮助...

    Observer设计模式

    总之,Observer设计模式是软件设计中一种常用且实用的模式,它能够有效地实现对象间的通信和状态同步,有助于构建可维护、可扩展的系统。在Java编程中,我们可以利用内置的Observable和Observer类,或者选择更适合...

    设计模式学习之Observer(观察者模式)

    - Spring框架中的事件驱动机制,通过ApplicationEvent和ApplicationListener实现观察者模式,使得组件之间可以解耦地传递事件。 - Android中的BroadcastReceiver,允许应用注册接收系统广播,当特定事件发生时,广播...

    spring事件的例子

    综上所述,Spring事件是基于观察者模式的一种设计模式实现,提供了发布-订阅式的事件处理能力,有助于构建松耦合的应用程序。通过创建自定义事件、发布事件、实现或注解监听器,我们可以有效地在系统组件之间传递...

    86丨开源实战四(下):总结Spring框架用到的11种设计模式1

    本篇文章将总结Spring框架中所采用的11种设计模式,帮助你深入理解Spring的内部机制。 1. **适配器模式**: 在Spring MVC中,适配器模式主要体现在Controller的实现方式上。如描述中提到,我们可以使用注解(@...

    设计模式之观察着模式Observer

    观察者模式(Observer Pattern)是软件设计模式中的一种行为模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。这种模式常用于实现事件驱动的编程...

    Spring事件管理

    首先,Spring事件是基于Java的观察者模式(Observer Pattern)实现的,它定义了主题(Subject)和观察者(Observer)之间的关系,当主题的状态发生改变时,会通知所有注册的观察者。在Spring中,事件被抽象为`...

    跟着 Guava、Spring 学习如何设计观察者模式.doc

    观察者模式是一种行为设计模式,它允许对象在状态改变时通知其他对象,这些对象被称为观察者。这种模式常用于创建事件驱动的系统,使得多个组件能够对特定事件作出响应。在Java中,Guava和Spring框架都提供了实现...

    对于Observer的扩展研究

    Observer模式,又称为发布-订阅(Publish-Subscribe)模式或事件驱动(Event-driven)模式,是设计模式中的一种行为模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会...

    Observer(观察者模式)学习源码

    Observer模式,也称为订阅或发布-订阅模式,是软件设计模式中的行为模式之一。它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。这种模式广泛应用于事件...

    Java 企业设计模式

    Java企业设计模式是软件开发领域中的重要组成部分,它是一套经过实践验证的解决方案,用于解决在Java环境中构建大型、复杂企业应用时常见的问题。这些模式是经验丰富的开发者们通过不断尝试和总结,形成的最佳实践,...

    Java的23种设计模式百度云下载链接.rar

    Java的23种设计模式是软件工程中非常重要的概念,它们是解决常见编程问题的成熟解决方案,被广泛应用于各种复杂的软件开发中。设计模式不是具体的代码或库,而是一种通用的、可重用的设计方案,它描述了在特定上下文...

    设计模式--观察者模式java例子

    观察者模式(Observer Pattern)是软件设计模式中的一种行为模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。这种模式常用于事件驱动的系统或者...

    MVC(单例模式)设计模式

    随着技术的发展,现代框架如Spring MVC提供了更全面的MVC支持,简化了开发过程,同时也提供了更多设计模式的集成,如依赖注入(Dependency Injection)和面向切面编程(Aspect-Oriented Programming)。 总之,MVC...

    java设计模式(绝对高清和完整)

    本资源“java设计模式(绝对高清和完整)”提供了全面且清晰的关于Java设计模式的学习材料,由“设计模式公司荣誉出品”,确保了内容的专业性和质量。 设计模式并不是具体的代码或库,而是描述在某些特定上下文中,...

    第十七章 Spring 事件(Events)1

    面向接口的事件/监听器设计模式在Spring中体现为`ApplicationListener`接口。这个接口扩展了Java的`EventListener`,并专门用于处理Spring应用上下文(ApplicationContext)事件。例如,通过实现`Application...

    JAVA设计模式思想(英文).

    这些设计模式在实际开发中有着广泛的应用,比如在Spring框架中就大量运用了代理、工厂、观察者等模式。同时,了解并熟练运用设计模式也是成为一名专业Java开发者的关键技能之一,它能帮助我们编写出更高质量、更易于...

    2010年 java 设计模式

    在2010年的Java开发环境中,设计模式的应用广泛,例如在Spring框架中,依赖注入(Dependency Injection)就是基于工厂模式的一种实现,而AOP(面向切面编程)则采用了代理模式。同时,MVC(模型-视图-控制器)架构...

    java设计模式的分析及其应用

    在实际的Java类库中,许多设计模式都有所体现,如ArrayList和LinkedList实现了List接口,这就是装饰模式的应用;Hibernate框架中的Session和SessionFactory体现了单例模式;Spring框架中的AOP(面向切面编程)运用了...

    设计模式理解

    在源码分析方面,很多知名框架和库都广泛运用了设计模式,例如Spring框架中的依赖注入(Dependency Injection)体现了工厂模式和代理模式,而观察者模式在事件驱动编程中扮演了重要角色。通过深入理解这些设计模式,...

Global site tag (gtag.js) - Google Analytics