springboot_监听

监听:有四种方式

/**
 * 定义一个事件
 */
public class MyApplicationEvent extends ApplicationEvent {

    public MyApplicationEvent(Object source) {
        super(source);

    }
}
/**
 * 定义一个事件监听器
 */
//@Component
public class MyApplicationListener implements ApplicationListener<MyApplicationEvent> {

    @Override
    public void onApplicationEvent(MyApplicationEvent event) {
        System.out.println("监听到事件,可以处理");
    }
}
/**
 * 定义一个MyApplicationEvent事件,继承ApplicationEvent
 * 定义一个MyApplicationListener事件监听,实现ApplicationListener,
 * 添加监听器
 * 发布事件
 */
@SpringBootApplication
public class Springboot8Application {

    public static void main(String[] args) {
        ConfigurableApplicationContext context = SpringApplication.run(Springboot8Application.class, args);
        //添加监听
        //context.addApplicationListener(new MyApplicationListener());
        //发布事件
        context.publishEvent(new MyApplicationEvent(new Object()));
    }
}

1.添加监听

//添加监听
        //context.addApplicationListener(new MyApplicationListener());

2.添加配置

#context.listener.classes=com.fz.song.one.MyApplicationListener

3.

纳入spring管理

//@Component

4.使用注解

/**
* 参数任意:(Event及其子类)
* 所有时间参数或者其子类都能接受到
* 参数一定是ApplicationEvent的子类
* @param event
*/
 @EventListener 

public void onApplicationEvent(MyApplicationEvent event) { System.out.println("监听到事件,可以处理"); }

第二种是怎么是怎么是实现的呢

org.springframework.boot.context.config.DelegatingApplicationListener类可以看到
private static final String PROPERTY_NAME = "context.listener.classes";一个常量


spring和springboot 也自己提供了很多监听事件,详细见:
org.springframework.context.event

org.springframework.boot.context.event

猜你喜欢

转载自www.cnblogs.com/songfahzun/p/9252801.html