<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                ## 一、概述: **自定義事件和自定義監聽器類的實現方式** 自定義事件:繼承自ApplicationEvent抽象類,然后定義自己的構造器 自定義監聽:實現ApplicationListener接口,然后實現onApplicationEvent方法 **springboot進行事件監聽有四種方式** 1.手工向ApplicationContext中添加監聽器 2.將監聽器裝載入spring容器 3.在application.properties中配置監聽器 4.通過@EventListener注解實現事件監聽 ## 二、代碼實現 下面講下4種事件監聽的具體實現 ### 方式1. 首先創建MyListener1類 ~~~ @Slf4j public class MyListener1 implements ApplicationListener<MyEvent> { public void onApplicationEvent(MyEvent event) { log.info(String.format("%s監聽到事件源:%s.", MyListener1.class.getName(), event.getSource())); } } ~~~ 然后在springboot應用啟動類中獲取ConfigurableApplicationContext上下文,裝載監聽 ~~~ @SpringBootApplication public class BootLaunchApplication { public static void main(String[] args) { ConfigurableApplicationContext context = SpringApplication.run(BootLaunchApplication.class, args); //裝載監聽 context.addApplicationListener(new MyListener1()); } } ~~~ ### 方式2(推薦). 創建MyListener2類,并使用@Component注解將該類裝載入spring容器中 ~~~ @Component @Slf4j public class MyListener2 implements ApplicationListener<MyEvent> { public void onApplicationEvent(MyEvent event) { log.info(String.format("%s監聽到事件源:%s.", MyListener2.class.getName(), event.getSource())); } } ~~~ ### 方式3. 首先創建MyListener3類 ~~~ @Slf4j public class MyListener3 implements ApplicationListener<MyEvent> { public void onApplicationEvent(MyEvent event) { log.info(String.format("%s監聽到事件源:%s.", MyListener3.class.getName(), event.getSource())); } } ~~~ 然后在application.properties中配置監聽,**注意修改路徑為自己項目路徑否則無法啟動** ~~~ context: listener: classes: com.kimgao.bootlauch.customlistener.MyListener3 ~~~ ### 方式4(推薦). 創建MyListener4類,該類無需實現ApplicationListener接口,使用@EventListener裝飾具體方法 ~~~ @Slf4j @Component public class MyListener4 { @EventListener public void listener(MyEvent event) { log.info(String.format("%s監聽到事件源:%s.", MyListener4.class.getName(), event.getSource())); } } ~~~ 自定義事件代碼如下: ~~~ @SuppressWarnings("serial") public class MyEvent extends ApplicationEvent { public MyEvent(Object source) { super(source); } } ~~~ ![](https://img.kancloud.cn/5e/dd/5edd641008a63ddd62d5f103a1de6597_497x297.png) ## 三、測試監聽事件發布 有了applicationContext,想在哪發布事件就在哪發布事件 ~~~ @RestController public class ListenerController { @Resource ConfigurableApplicationContext applicationContext; @RequestMapping("/publish") public String hello() { applicationContext.publishEvent(new MyEvent("郵件內容")); return "OK"; } } ~~~ ![](https://img.kancloud.cn/67/78/6778c2378f7afdba311ec9f65e230526_448x244.png) 啟動后,日志打印如下。(下面截圖是在啟動類發布事件后的截圖,在單元測試里面監聽器1監聽不到,執行順序問題): ![](https://img.kancloud.cn/eb/52/eb525fce54421971270293626087f24e_1776x469.png) 由日志打印可以看出,SpringBoot四種事件的實現方式監聽是有序的。無論執行多少次都是這個順序。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看