一、简介
在使用spring开发中,有时我们需要自定义事件,实现也不复杂,只需继承抽象类ApplicationContextEvent即可。
二、开发流程
1、自定义事件类,继承ApplicationContextEvent类,同时构造方法中传ApplicationContext的引用。
如:
public class HelloEvent extends ApplicationContextEvent { private String name; /** * Create a new ContextStartedEvent. * * @param source the {@code ApplicationContext} that the event is raised for * (must not be {@code null}) */ public HelloEvent(ApplicationContext source) { super(source); } public String getName() { return name; } public void setName(String name) { this.name = name; } }2、实现自定义事件的监听器
监听器需要实现ApplicationListener接口,同时泛型中传入自定义事件的class
如:
@Component public class HelloEventListener implements ApplicationListener<HelloEvent> { public void onApplicationEvent(HelloEvent event) { System.out.println("hello, "+event.getName()); } }3、触发事件
先生成自定义事件实例,再使用spring容器的context的publishEvent发布事件,
如:
public class SpringEventMain { public static void main(String[] args) { AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(SpringConfig.class); HelloEvent helloEvent = new HelloEvent(ctx); //定义事件 helloEvent.setName("banana"); ctx.publishEvent(helloEvent); //发布事件 } }输出结果:
hello, banana