<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    paulwong

    SRPING自帶的事件監聽機制

    定義一個事件,因SPRING中可以有不同的事件,需要定義一個類以作區分:
    import lombok.Getter;
    import org.springframework.context.ApplicationEvent;


    @Getter
    public class JavaStackEvent extends ApplicationEvent {

        /**
         * Create a new {
    @code ApplicationEvent}.
         *
         * 
    @param source the object on which the event initially occurred or with
         *               which the event is associated (never {
    @code null})
         
    */
        public JavaStackEvent(Object source) {
            super(source);
        }


    }

    定義一個此事件觀察者,即感興趣者:
    import lombok.NonNull;
    import lombok.RequiredArgsConstructor;
    import org.springframework.context.ApplicationListener;
    import org.springframework.scheduling.annotation.Async;

    /**
     * 觀察者:讀者粉絲
     
    */
    @RequiredArgsConstructor
    public class ReaderListener implements ApplicationListener<JavaStackEvent> {

        @NonNull
        private String name;

        private String article;

        @Async
        @Override
        public void onApplicationEvent(JavaStackEvent event) {
            // 更新文章
            updateArticle(event);
        }

        private void updateArticle(JavaStackEvent event) {
            this.article = (String) event.getSource();
            System.out.printf("我是讀者:%s,文章已更新為:%s\n", this.name, this.article);
        }

    }

    注冊感興趣者(將自身注入SPRING容器則完成注冊),并制定發布機制(通過CONTEXT發布事件):
    import lombok.extern.slf4j.Slf4j;
    import org.springframework.boot.CommandLineRunner;
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;

    @Slf4j
    @Configuration
    public class ObserverConfiguration {

        @Bean
        public CommandLineRunner commandLineRunner(ApplicationContext context) {
            return (args) -> {
                log.info("發布事件:什么是觀察者模式?");
                context.publishEvent(new JavaStackEvent("什么是觀察者模式?"));
            };
        }

        @Bean
        public ReaderListener readerListener1(){
            return new ReaderListener("小明");
        }

        @Bean
        public ReaderListener readerListener2(){
            return new ReaderListener("小張");
        }

        @Bean
        public ReaderListener readerListener3(){
            return new ReaderListener("小愛");
        }

    }

    posted on 2021-04-09 14:55 paulwong 閱讀(325) 評論(0)  編輯  收藏 所屬分類: SPRINGSPRING BOOT

    主站蜘蛛池模板: 拔擦拔擦8x华人免费久久| 国产一精品一AV一免费孕妇| 农村寡妇一级毛片免费看视频| 亚洲Aⅴ在线无码播放毛片一线天| 一区二区视频在线免费观看| 日本在线看片免费| 无码一区二区三区AV免费| 亚洲一区二区三区免费| 久久亚洲熟女cc98cm| 亚洲AⅤ男人的天堂在线观看| 在线免费观看中文字幕| 亚洲精品无码乱码成人| 中文字幕亚洲男人的天堂网络| 大片免费观看92在线视频线视频| 18女人水真多免费高清毛片| 在线观看免费亚洲| 深夜A级毛片视频免费| 中文字幕亚洲日本岛国片| 在线观看亚洲AV日韩AV| 免费看黄的成人APP| 四虎成人精品一区二区免费网站| 亚洲人成网站在线播放2019| 2015日韩永久免费视频播放| 亚洲一级免费视频| 久草视频在线免费看| 亚洲天堂一区在线| 四虎国产精品永久免费网址| 久久久久国产成人精品亚洲午夜 | 免费一级毛片在线播放不收费| 亚洲免费在线视频| 国产免费黄色无码视频| 四虎免费大片aⅴ入口| 成年大片免费视频播放一级| 亚洲综合一区二区国产精品| 国产精品99精品久久免费| 亚洲综合av一区二区三区| 久久影视综合亚洲| 男女做羞羞的事视频免费观看无遮挡| 亚洲国产第一页www| 破了亲妺妺的处免费视频国产| 亚洲一区精彩视频|