SpringBoot 自定义事件

1 . 自定义事件需要继承  ApplicationListener 重写 onApplicationEvent

   例如 :

@Component
public class TestEventApp implements ApplicationListener {
    @Override
    public void onApplicationEvent(ApplicationEvent event) {
        if (event instanceof TestEvents){
            TestEvents testEvents = (TestEvents)event;
            System.out.println("-------------->"+testEvents.getName());

        }
    }
}

2.事件实体类 用于封装参数

@Getter
@Setter
public class TestEvents extends ApplicationEvent {
    private String name;

    private String  no;
    /**
     * Create a new ApplicationEvent.
     *
     * @param source the object on which the event initially occurred (never {@code null})
     */
    public TestEvents(Object source,String name,String no ) {
        super(source);
        this.name =  name ;
        this.no = no ;
    }
}

3.获取全局上下文

@Component
public class ApplicationContextProvider implements ApplicationContextAware {

    private  ApplicationContext applicationContext ;
    @Override
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        this.applicationContext = applicationContext ;
    }
    public ApplicationContext getApplicationContext(){
        return applicationContext;
    }
}

4.推送/触发事件

ApplicationContext applicationContext = applicationContextProvider.getApplicationContext();
TestEvents testEvents = new TestEvents("11111111","大傻子","this is a test");
applicationContext.publishEvent(testEvents);

当调用applicationContext.publishEvent(testEvents); 这个方法后 ApplicationListener 会监听到事件,然后触发onApplicationEvent这个方法

 

 

 

 

 

你可能感兴趣的:(SpringBoot 自定义事件)