<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

    主站蜘蛛池模板: 久久亚洲精品视频| 免费av欧美国产在钱| 国产a v无码专区亚洲av | 亚洲天堂中文资源| 久久午夜免费鲁丝片| 亚洲av无码一区二区三区不卡| a级毛片无码免费真人久久| 亚洲成AV人片在| 午夜精品免费在线观看| 亚洲综合免费视频| 无码日韩人妻av一区免费| 亚洲日韩一区精品射精| 国产免费卡一卡三卡乱码| 又粗又长又爽又长黄免费视频 | 国产成人久久AV免费| 亚洲成a人片77777老司机| 最近中文字幕大全免费视频 | 91精品免费观看| 亚洲国产品综合人成综合网站| 一级女人18毛片免费| 亚洲人成电影网站色| 亚洲国产精品综合久久网络| 两个人日本免费完整版在线观看1| 亚洲国产成人片在线观看无码 | 免费萌白酱国产一区二区| 高清永久免费观看| 亚洲国产成AV人天堂无码| 三年片在线观看免费大全| 国产精品久久久久久亚洲小说| 亚洲无码视频在线| 84pao强力永久免费高清| 亚洲成A人片在线播放器| 亚洲国产精品成人| 亚洲视频在线观看免费| 亚洲精品无码不卡在线播放| 国产亚洲av片在线观看18女人| 亚洲国产精品无码久久久久久曰| 91成人免费福利网站在线| 亚洲一区二区三区免费在线观看| 亚洲 另类 无码 在线| 欧洲精品99毛片免费高清观看|