package event; import org.springframework.context.ApplicationEvent; /** * @Description: 自定义事件 */ public class DemoEvent extends ApplicationEvent { private String msg; /** * Create a new ApplicationEvent. * * @param source the object on which the event initially occurred (never {@code null}) */ public DemoEvent(Object source,String msg) { super(source); this.msg = msg; } public String getMsg() { return msg; } public void setMsg(String msg) { this.msg = msg; } }
package event; import org.springframework.context.ApplicationListener; import org.springframework.stereotype.Component; /** * @Description: 事件监听器 */ @Component public class DemoListener implements ApplicationListener<DemoEvent> { @Override public void onApplicationEvent(DemoEvent event) { String msg = event.getMsg(); System.out.println(msg); } }
package event; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ApplicationContext; import org.springframework.stereotype.Component; /** * @Description: 事件发布类 */ @Component public class DemoPublisher { @Autowired private ApplicationContext applicationContext; public void publish(String msg){ applicationContext.publishEvent(new DemoEvent(this,msg)); } }
package event; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; /** * @Description:配置类 */ @Configuration @ComponentScan("event") public class EventConfig { }
package event; import org.springframework.context.annotation.AnnotationConfigApplicationContext; /** * @Description:测试类 */ public class Main { public static void main(String[] args) { AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(EventConfig.class); DemoPublisher demoPublisher = context.getBean(DemoPublisher.class); demoPublisher.publish("Spring触发事件!"); context.close(); } }