Spring Boot實戰筆記(四)-- Spring常用配置(事件Application Event)
阿新 • • 發佈:2017-09-23
ans can string code text extends autowired dem plc
一、事件(Application Event)
Spring的事件為Bean和Bean之間的消息通信提供了支持。當一個Bean處理完一個任務之後,希望另一個Bean知道並能做相應的處理,這時我們就需要讓另一個Bean監聽當前Bean所發送的事情。
Spring的事件需要遵循如下流程:
(1)自定義事件,集成ApplicationEvent。
(2)定義事件監聽器,實現ApplicationListener。
(3)使用容器發布事件。
示例:
1.自定義事件。
package com.ecworking.event; import org.springframework.context.ApplicationEvent;public class DemoEvent extends ApplicationEvent{ private static final long serialVersionUID = 1L; private String msg; public DemoEvent(Object source, String msg) { super(source); this.msg = msg; } public String getMsg() { return msg; } public voidsetMsg(String msg) { this.msg = msg; } }
2.事件監聽器。
package com.ecworking.event; import org.springframework.context.ApplicationListener; import org.springframework.stereotype.Component; @Component public class DemoListener implements ApplicationListener<DemoEvent> { //實現ApplicationListener接口,並指定監聽的事件類型。public void onApplicationEvent(DemoEvent event){ //使用onApplicationEvent方法對消息進行接受處理。 String msg = event.getMsg(); System.out.println("bean-demoListener 接收到了 bean-demoPublisher 發布的消息:" + msg); } }
3.事件發布類。
package com.ecworking.event; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ApplicationContext; import org.springframework.stereotype.Component; @Component public class DemoPublisher { @Autowired ApplicationContext applicationContext; //註入ApplicationContext用來發布事件。 public void publish(String msg){ applicationContext.publishEvent(new DemoEvent(this, msg)); //使用 ApplcationContext 的 publishEvent 方法來發布。 } }
4.配置類。
package com.ecworking.event; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; @Configuration @ComponentScan("com.ecworking.event") public class EventConfig { }
5.運行。
package com.ecworking.event; import org.springframework.context.annotation.AnnotationConfigApplicationContext; public class Main { public static void main(String[] args) { AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(EventConfig.class); DemoPublisher demoPublisher = context.getBean(DemoPublisher.class); demoPublisher.publish("hello application event"); context.close(); } }
運行結果:
Spring Boot實戰筆記(四)-- Spring常用配置(事件Application Event)