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

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

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

    paulwong

    SRPING自帶的事件監(jiān)聽機(jī)制

    定義一個(gè)事件,因SPRING中可以有不同的事件,需要定義一個(gè)類以作區(qū)分:
    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);
        }


    }

    定義一個(gè)此事件觀察者,即感興趣者:
    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);
        }

    }

    注冊(cè)感興趣者(將自身注入SPRING容器則完成注冊(cè)),并制定發(fā)布機(jī)制(通過CONTEXT發(fā)布事件):
    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("發(fā)布事件:什么是觀察者模式?");
                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 閱讀(324) 評(píng)論(0)  編輯  收藏 所屬分類: SPRINGSPRING BOOT

    主站蜘蛛池模板: a在线视频免费观看在线视频三区| 杨幂最新免费特级毛片| 亚洲国产午夜精品理论片在线播放| 亚洲AV无码男人的天堂| 免费很黄无遮挡的视频毛片| 18禁在线无遮挡免费观看网站| 91精品啪在线观看国产线免费| 最新欧洲大片免费在线| 日本高清免费不卡视频| 亚洲日韩中文在线精品第一| 亚洲日本一区二区三区| 亚洲女女女同性video| eeuss在线兵区免费观看| 久久ww精品w免费人成| 国产男女猛烈无遮挡免费视频| 国产亚洲成人在线播放va| 亚洲美女中文字幕| 国产精品亚洲专区一区| 无码精品国产一区二区三区免费| 97在线线免费观看视频在线观看| 亚洲毛片av日韩av无码| 中文字幕亚洲精品资源网| 国产偷国产偷亚洲高清在线| 久久成人无码国产免费播放| 四虎成人精品一区二区免费网站| 亚洲午夜久久久影院| 国产精品亚洲一区二区麻豆| 好男人资源在线WWW免费| 很黄很色很刺激的视频免费| av在线亚洲欧洲日产一区二区| 亚洲乱码中文论理电影| 国产精品极品美女自在线观看免费| 91麻豆最新在线人成免费观看| 亚洲精品国自产拍在线观看| 亚洲a级在线观看| 成人免费乱码大片A毛片| 久久久久久国产精品免费免费| 亚洲国产美女精品久久久久∴| 中文字幕乱码亚洲无线三区 | 免费无码成人AV片在线在线播放| 精品亚洲综合久久中文字幕|