这个是spring基于Application的监听器,继承ApplicationEvent类就可以创建一个监听器监听的对象。具体代码如下:
这个是spring基于Application的监听器,继承ApplicationEvent类就可以创建一个监听器监听的对象。具体代码如下:
package com.example.demo.event;import lombok.Data;import org.springframework.context.ApplicationEvent;/** * 监听器监听的对象 */@DatapublicclassDemoEventextendsApplicationEvent{private String msg;publicDemoEvent(Object source,String msg){super(source);this.msg= msg;}}
package com.example.demo.event;import org.springframework.context.ApplicationListener;import org.springframework.context.annotation.Configuration;/** * 监听DemoEvent事件 * @author javacfox */@ConfigurationpublicclassDemoEventListenerimplementsApplicationListener<DemoEvent>{@OverridepublicvoidonApplicationEvent(DemoEvent demoEvent){ System.out.println("DemoEventListener接受到了demoPublisher发布的消息:"+demoEvent.getMsg());}}
package com.example.demo.event;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.context.ApplicationContext;import org.springframework.context.annotation.Configuration;@ConfigurationpublicclassDemoEventPublisher{@Autowiredprivate ApplicationContext applicationContext;publicvoidpublish(){ DemoEvent event=newDemoEvent(this,"发布成功!"); System.out.println("发部event:"+event); applicationContext.publishEvent(event);}}
package com.test.demo.event;import org.springframework.context.annotation.AnnotationConfigApplicationContext;import org.springframework.context.annotation.ComponentScan;import org.springframework.context.annotation.Configuration;@Configuration@ComponentScan({"com.test.demo.event"})publicclassEventTest{publicstaticvoidmain(String[] args){ AnnotationConfigApplicationContext context=newAnnotationConfigApplicationContext(EventTest.class); context.start(); String targetObj="i am the target object"; DemoEvent demoEvent=newDemoEvent(targetObj,"目标发布成功!");// 发布事件 context.publishEvent(demoEvent); context.close();}}
21:55:21.065[main] DEBUG org.springframework.context.annotation.AnnotationConfigApplicationContext- Refreshing org.springframework.context.annotation.AnnotationConfigApplicationContext@16f6561221:55:21.079[main] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory- Creating shared instance of singleton bean'org.springframework.context.annotation.internalConfigurationAnnotationProcessor'21:55:21.129[main] DEBUG org.springframework.context.annotation.ClassPathBeanDefinitionScanner- Identified candidate componentclass: file[F:\spring-boot-2.0.1.RELEASE\spring-boot-project\DemoTest\target\classes\com\test\demo\event\DemoEventListener.class]21:55:21.130[main] DEBUG org.springframework.context.annotation.ClassPathBeanDefinitionScanner- Identified candidate componentclass: file[F:\spring-boot-2.0.1.RELEASE\spring-boot-project\DemoTest\target\classes\com\test\demo\event\DemoEventPublisher.class]21:55:21.207[main] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory- Creating shared instance of singleton bean'org.springframework.context.event.internalEventListenerProcessor'21:55:21.209[main] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory- Creating shared instance of singleton bean'org.springframework.context.event.internalEventListenerFactory'21:55:21.210[main] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory- Creating shared instance of singleton bean'org.springframework.context.annotation.internalAutowiredAnnotationProcessor'21:55:21.211[main] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory- Creating shared instance of singleton bean'org.springframework.context.annotation.internalCommonAnnotationProcessor'21:55:21.217[main] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory- Creating shared instance of singleton bean'eventTest'21:55:21.221[main] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory- Creating shared instance of singleton bean'demoEventListener'21:55:21.222[main] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory- Creating shared instance of singleton bean'demoEventPublisher' DemoEventListener接受到了demoPublisher发布的消息:目标发布成功!21:55:21.248[main] DEBUG org.springframework.context.annotation.AnnotationConfigApplicationContext- Closing org.springframework.context.annotation.AnnotationConfigApplicationContext@16f65612, started on Tue Jan1421:55:21 CST2020 Process finished with exit code0