码迷,mamicode.com
首页 > 编程语言 > 详细

SpringBoot自定义监听器

时间:2020-02-19 20:57:33      阅读:289      评论:0      收藏:0      [点我收藏+]

标签:gap   rom   定义   监听器   override   rop   查看   cto   new   

【问题】实现ApplicationListener接口和实现SmartApplicationListener 接口? 

实现ApplicationListener接口针对单一事件监听

实现SmartApplicationListener 接口针对多种事件监听

 

其它注意:

Order值越小越优先执行

使用application.properties中定义的优于其它方式

 

【问题】如何自定义监听器? 

一、实现方式1

1、创建监听器类FirstListener.java 

@Order(1)
public class FirstListener  implements ApplicationListener<ApplicationStartedEvent> {


    @Override
    public void onApplicationEvent(ApplicationStartedEvent event) {
        System.out.println("hello, first listener");
    }
}

  

2、在spring.factories文件中增加配置监听器

org.springframework.context.ApplicationListener=com.example.demo.listener.FirstListener

技术图片

 

 

3、运行查看效果

技术图片

 

二、实现方式2

1、创建监听器类

@Order(2)
public class SecondListener   implements ApplicationListener<ApplicationStartedEvent> {


    @Override
    public void onApplicationEvent(ApplicationStartedEvent event) {
        System.out.println("hello, second listener");
    }
}

  

2、实例化SpringApplication,然后增加监听器

@SpringBootApplication
@MapperScan("com.example.demo.mapper")
public class Sb2Application {

	public static void main(String[] args) {
		
		SpringApplication springApplication = new SpringApplication(Sb2Application.class);
		springApplication.addListeners(new SecondListener());
		springApplication.run(args);
	}

}

  

3、运行

技术图片

 

三、实现方式3

1、创建监听器类

@Order(3)
public class ThirdListener implements ApplicationListener<ApplicationStartedEvent> {


    @Override
    public void onApplicationEvent(ApplicationStartedEvent event) {
        System.out.println("hello, third listener");
    }
}

  

2、在application.propeties 文件中配置如下

技术图片

 

 

3、运行

技术图片

 

 第三个监听器Order为3,但是却最早打印出来。原理类似于初始化器。DelegatingApplicationListener类里定义的Order为0

 

四、实现方式4

1、创建监听器类

@Order(4)
public class FourthListener implements SmartApplicationListener {


    @Override
    public boolean supportsEventType(Class<? extends ApplicationEvent> eventType) {
        return ApplicationStartedEvent.class.isAssignableFrom(eventType) ||
                ApplicationPreparedEvent.class.isAssignableFrom(eventType);
    }

    @Override
    public void onApplicationEvent(ApplicationEvent event) {
        System.out.println("hello fourth listener");
    }
}  

设置感兴趣的事件为ApplicationStartedEvent和ApplicationPreparedEvent

 

 

2、以追加的方式在application.properties配置

技术图片

 

 

3、运行

技术图片

 

 可以发现打印了两次,因为它对ApplicationStartedEvent和ApplicationPreparedEvent两种事件感兴趣。

 

SpringBoot自定义监听器

标签:gap   rom   定义   监听器   override   rop   查看   cto   new   

原文地址:https://www.cnblogs.com/linlf03/p/12332844.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!