什么是ApplicationContext?
它是Spring的核心,Context我们通常解释为上下文环境,但是理解成容器会更好些。
ApplicationContext则是应用的容器。
Spring把Bean(object)放在容器中,需要用就通过get方法取出来。
ApplicationEvent
是个抽象类,里面只有一个构造函数和一个长整型的timestamp。
ApplicationListener
是一个接口,里面只有一个onApplicationEvent方法。
所以自己的类在实现该接口的时候,要实装该方法。
如果在上下文中部署一个实现了ApplicationListener接口的bean,
那么每当在一个ApplicationEvent发布到 ApplicationContext时,
这个bean得到通知。其实这就是标准的Observer设计模式。
首先创建一个Event事件类:
- 1. public class EmailListEvent extends ApplicationEvent {
- 2.
- 3. private static final long serialVersionUID = 1L;
- 4. public String address;
- 5. public String text;
- 6.
- 7. public EmailListEvent(Object source) {
- 8. super(source);
- 9. }
- 10.
- 11. public EmailListEvent(Object source, String address, String text) {
- 12. super(source);
- 13. this.address = address;
- 14. this.text = text;
- 15. }
- 16.
- 17. public void print() {
- 18. System.out.println("Hello,Spring Event!!!");
- 19. }
- 20. }
其次创建一个ApplicationListener类:
- 1. public class EmailNotifier implements ApplicationListener {
- 2.
- 3. public void onApplicationEvent(ApplicationEvent evt) {
- 4. if (evt instanceof EmailListEvent) {
- 5. EmailListEvent emailEvent = (EmailListEvent) evt;
- 6. emailEvent.print();
- 7. System.out.println("the source is:" + emailEvent.getSource());
- 8. System.out.println("the address is:" + emailEvent.address);
- 9. System.out.println("the mail's context is :" + emailEvent.text);
- 10. }
- 11.
- 12. }
- 13. }
接着将Listener注册到Spring的xml文件中:
- <?xml version="1.0" encoding="UTF-8"?>
- <beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xmlns:aop="http://www.springframework.org/schema/aop"
- xmlns:tx="http://www.springframework.org/schema/tx"
- xsi:schemaLocation="http://www.springframework.org/schema/beans
- http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
- http://www.springframework.org/schema/aop
- http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
- http://www.springframework.org/schema/tx
- http://www.springframework.org/schema/tx/spring-tx-2.0.xsd">
- <bean id="emailListListener" class="spring.event.EmailNotifier"></bean>
- </beans>
最后创建Demo类:
- 1. public class ListenerEventDemo {
- 2.
- 3. /**
- 4. * @param args
- 5. */
- 6. public static void main(String[] args) {
- 7. ApplicationContext context = new ClassPathXmlApplicationContext(
- 8. "SpringEvent.xml");
- 9. EmailListEvent emailListEvent = new EmailListEvent("hello",
- 10. "helloSpring@sina.com", "this is a test eamil content");
- 11. //在ApplicationContext中发布一个 ApplicationEvent
- 12. context.publishEvent(emailListEvent);
- 13. }
- 14.
- 15. }
测试结果:
- # Hello,Spring Event!!!
- # the source is:hello
- # the address is:helloSpring@sina.com
- # the mail's context is :this is a test eamil content
相关推荐
在Spring中,这可以通过实现`ApplicationListener`接口来完成。监听器将接收到`ApplicationEvent`的实例,并在其`onApplicationEvent`方法中处理事件。 ```java @Component public class CustomEventListener ...
Spring Boot事件处理基于Spring框架的ApplicationEvent和ApplicationListener接口。当一个事件发生时,Spring会创建一个ApplicationEvent对象并将其发布到所有注册的ApplicationListener。这种设计模式被称为观察者...
Spring提供了ApplicationEvent和ApplicationListener接口来实现事件处理。当你有一个事件需要在整个应用中传播时,可以创建一个自定义的事件类,继承自ApplicationEvent。例如: ```java public class CustomEvent ...
Spring事件处理的核心类有三个:ApplicationEvent、ApplicationEventPublisher和ApplicationListener。ApplicationEvent是所有自定义事件的基类,我们通常会继承它来创建自己的事件类。ApplicationEventPublisher...
public class CustomEventListener implements ApplicationListener<CustomEvent> { @Override public void onApplicationEvent(CustomEvent event) { System.out.println("接收到事件:" + event.getEventData()...
- Spring 提供了ApplicationEvent和ApplicationListener接口,用于在容器内发布和监听事件。 8. **Spring 应用组件** - 包括Bean、Bean工厂、应用上下文等。 9. **Spring IOC 容器** - 管理Bean的生命周期和...
事件监听器则是实现了`ApplicationListener`接口的类,它们会订阅感兴趣的事件,并在事件被发布时接收到通知。 创建自定义事件很简单,只需要创建一个新的Java类继承`ApplicationEvent`,并提供构造函数以传递事件...
Spring提供了一种简单的方式,通过实现ApplicationListener接口或者使用@Component加上@EventListener注解来定义监听器: 1. 实现ApplicationListener接口: ```java @Component public class CustomEventListener...
而监听事件的方法则由`ApplicationListener`接口实现。下面我们将深入探讨如何在Spring Boot中实现多个监听方法以及相关的知识点。 1. **创建事件**:首先,我们需要定义一个自定义的事件类,继承自`...
例如,Spring框架提供了ApplicationEvent和ApplicationListener接口,用于在应用程序上下文中发布和监听自定义事件。此外,安装和配置EDA工具,如Apache Kafka或者RabbitMQ,需要了解其安装步骤、配置文件设置,以及...
核心概念包括事件(`ApplicationEvent`)、事件发布者(`ApplicationEventPublisher`)和事件监听器(`ApplicationListener`)。 ### 2. 事件(`ApplicationEvent`) `ApplicationEvent`是Spring框架提供的基类,...