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设计模式】是Spring框架中面向切面编程的重要组成部分,它允许开发者通过分离关注点来解耦代码,实现灵活的模块化设计。在本章中,我们将探讨17种设计模式在Spring AOP中的应用和实现,以及它们如何帮助...
总之,Observer设计模式是软件设计中一种常用且实用的模式,它能够有效地实现对象间的通信和状态同步,有助于构建可维护、可扩展的系统。在Java编程中,我们可以利用内置的Observable和Observer类,或者选择更适合...
- Spring框架中的事件驱动机制,通过ApplicationEvent和ApplicationListener实现观察者模式,使得组件之间可以解耦地传递事件。 - Android中的BroadcastReceiver,允许应用注册接收系统广播,当特定事件发生时,广播...
综上所述,Spring事件是基于观察者模式的一种设计模式实现,提供了发布-订阅式的事件处理能力,有助于构建松耦合的应用程序。通过创建自定义事件、发布事件、实现或注解监听器,我们可以有效地在系统组件之间传递...
本篇文章将总结Spring框架中所采用的11种设计模式,帮助你深入理解Spring的内部机制。 1. **适配器模式**: 在Spring MVC中,适配器模式主要体现在Controller的实现方式上。如描述中提到,我们可以使用注解(@...
观察者模式(Observer Pattern)是软件设计模式中的一种行为模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。这种模式常用于实现事件驱动的编程...
首先,Spring事件是基于Java的观察者模式(Observer Pattern)实现的,它定义了主题(Subject)和观察者(Observer)之间的关系,当主题的状态发生改变时,会通知所有注册的观察者。在Spring中,事件被抽象为`...
观察者模式是一种行为设计模式,它允许对象在状态改变时通知其他对象,这些对象被称为观察者。这种模式常用于创建事件驱动的系统,使得多个组件能够对特定事件作出响应。在Java中,Guava和Spring框架都提供了实现...
Observer模式,又称为发布-订阅(Publish-Subscribe)模式或事件驱动(Event-driven)模式,是设计模式中的一种行为模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会...
Observer模式,也称为订阅或发布-订阅模式,是软件设计模式中的行为模式之一。它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。这种模式广泛应用于事件...
Java企业设计模式是软件开发领域中的重要组成部分,它是一套经过实践验证的解决方案,用于解决在Java环境中构建大型、复杂企业应用时常见的问题。这些模式是经验丰富的开发者们通过不断尝试和总结,形成的最佳实践,...
Java的23种设计模式是软件工程中非常重要的概念,它们是解决常见编程问题的成熟解决方案,被广泛应用于各种复杂的软件开发中。设计模式不是具体的代码或库,而是一种通用的、可重用的设计方案,它描述了在特定上下文...
观察者模式(Observer Pattern)是软件设计模式中的一种行为模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。这种模式常用于事件驱动的系统或者...
随着技术的发展,现代框架如Spring MVC提供了更全面的MVC支持,简化了开发过程,同时也提供了更多设计模式的集成,如依赖注入(Dependency Injection)和面向切面编程(Aspect-Oriented Programming)。 总之,MVC...
本资源“java设计模式(绝对高清和完整)”提供了全面且清晰的关于Java设计模式的学习材料,由“设计模式公司荣誉出品”,确保了内容的专业性和质量。 设计模式并不是具体的代码或库,而是描述在某些特定上下文中,...
面向接口的事件/监听器设计模式在Spring中体现为`ApplicationListener`接口。这个接口扩展了Java的`EventListener`,并专门用于处理Spring应用上下文(ApplicationContext)事件。例如,通过实现`Application...
这些设计模式在实际开发中有着广泛的应用,比如在Spring框架中就大量运用了代理、工厂、观察者等模式。同时,了解并熟练运用设计模式也是成为一名专业Java开发者的关键技能之一,它能帮助我们编写出更高质量、更易于...
在2010年的Java开发环境中,设计模式的应用广泛,例如在Spring框架中,依赖注入(Dependency Injection)就是基于工厂模式的一种实现,而AOP(面向切面编程)则采用了代理模式。同时,MVC(模型-视图-控制器)架构...
在实际的Java类库中,许多设计模式都有所体现,如ArrayList和LinkedList实现了List接口,这就是装饰模式的应用;Hibernate框架中的Session和SessionFactory体现了单例模式;Spring框架中的AOP(面向切面编程)运用了...
在源码分析方面,很多知名框架和库都广泛运用了设计模式,例如Spring框架中的依赖注入(Dependency Injection)体现了工厂模式和代理模式,而观察者模式在事件驱动编程中扮演了重要角色。通过深入理解这些设计模式,...