返回顶部
首页 > 资讯 > 精选 >springboot怎么开启一个监听线程执行任务
  • 478
分享到

springboot怎么开启一个监听线程执行任务

2023-07-05 07:07:39 478人浏览 薄情痞子
摘要

这篇文章主要介绍“SpringBoot怎么开启一个监听线程执行任务”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“springboot怎么开启一个监听线程执行任务”文章能帮助大家解决问题。spring

这篇文章主要介绍“SpringBoot怎么开启一个监听线程执行任务”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“springboot怎么开启一个监听线程执行任务”文章能帮助大家解决问题。

    springboot开启一个监听线程执行任务

    public class StartApplicationListener implements ApplicationListener<ContextRefreshedEvent> {    @Override    public void onApplicationEvent(ContextRefreshedEvent contextRefreshedEvent) {        ApplicationContext applicationContext = contextRefreshedEvent.getApplicationContext();        ApplicationContext parent = applicationContext.getParent();        if (parent == null) {            CacheManager cacheManager = applicationContext.getBean(CacheManager.class);            Cache cache = cacheManager.getCache(MsConstants.node_CACHE_NAME);           new Thread(new Runnable() {               @Override               public void run() {                  //代码                                }           }).start();        }    }
    public static void main(String[] args) {    SpringApplication app = new SpringApplication(FigureServerApplication.class);    app.addListeners(new StartApplicationListener());    app.run(args);}

    springboot中监听事件的创建流程

    事件监听有同步和异步两种方式,springboot项目中提供了一个用于异步处理的注解:@Async。

    事件的大体步骤

    • 定义一个事件。

    •  创建一个监听器。

    • 确保监听器在容器内。

    • 发布事件,进行测试

    废话不多说,简单叙述几个不同方式的demo。

    首先,我们先创建一个springboot项目。

    第一种

    定义一个事件,需要继承ApplicationEvent

    public class MyEvent extends ApplicationEvent {    public MyEvent(Object source) {        super(source);        System.out.println("我是一个事件,目前在事件的构造器内");    }}

    创建一个监听器。直接实现ApplicationListener接口,重写其中onApplicationEvent方法.

    public class MyEventListener implements ApplicationListener<MyEvent> {    @Override    public void onApplicationEvent(MyEvent event) {        System.out.println("现在开始执行监听器中的内容,我是直接实现ApplicationListener接口的方式进行的");        System.out.println("event.getSource() = " + event.getSource());    }}

    将监听器手动添加进应用容器内,并进行发布事件。

    @SpringBootApplicationpublic class EventTestApplication {    public static void main(String[] args) {//        SpringApplication.run(EventTestApplication.class, args);        //第一种:自己手动将监听器添加到application中        SpringApplication application = new SpringApplication(EventTestApplication.class);        //添加监听器        application.addListeners(new MyEventListener());        ConfigurableApplicationContext context = application.run(args);        //进行发布事件        context.publishEvent(new MyEvent("Event数据源"));        context.close();    }}

    启动主启动类,进行打印测试。

    第二种

    同第一种的1

    创建一个监听器。

    @Componentpublic class MyEventListener2 implements ApplicationListener<MyEvent> {    @Override    public void onApplicationEvent(MyEvent event) {        System.out.println("现在开始执行监听器中的内容,我是打Compoent注解的方式进行的");        System.out.println("event.getSource() = " + event.getSource());    }}

    发布事件,后续进行启动类测试即可。

    @SpringBootApplicationpublic class EventTestApplication {    public static void main(String[] args) {        ConfigurableApplicationContext context = SpringApplication.run(EventTestApplication.class, args);        //发布事件        context.publishEvent(new MyEvent("source"));        context.close();    }}

    第三种

    全部采用注解的方式

    同第一种的1

    创建一个监听器。

    @Componentpublic class MyEventListener3 {    @Async//异步注解。开启一个新线程。 去掉此注解则会变成同步监听。    @EventListener(classes = MyEvent.class)    public void TestListener(MyEvent myEvent){        System.out.println("我是@EventListener注解的方式实现的监听器");        System.out.println("myEvent.getSource() = " + myEvent.getSource());    }}

    发布事件,后续进行启动类测试即可。

    @SpringBootApplicationpublic class EventTestApplication {    public static void main(String[] args) {        ConfigurableApplicationContext context = SpringApplication.run(EventTestApplication.class, args);        //发布事件        context.publishEvent(new MyEvent("source"));        context.close();    }}

    以上就是三种创建的方式。

    下面是代码的结构图:

    springboot怎么开启一个监听线程执行任务

    关于“springboot怎么开启一个监听线程执行任务”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注编程网精选频道,小编每天都会为大家更新不同的知识点。

    --结束END--

    本文标题: springboot怎么开启一个监听线程执行任务

    本文链接: https://lsjlt.com/news/350299.html(转载时请注明来源链接)

    有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

    猜你喜欢
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作