zoukankan      html  css  js  c++  java
  • 极简spring 监听器使用

    maven 依赖

    <dependency>
    	<groupId>org.springframework.boot</groupId>
    	<artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    

    启动类代码

    package com.example.demo;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.boot.ApplicationArguments;
    import org.springframework.boot.ApplicationRunner;
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.ApplicationEvent;
    import org.springframework.context.ApplicationEventPublisher;
    import org.springframework.context.event.EventListener;
    import org.springframework.stereotype.Component;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    import java.util.HashMap;
    
    @SpringBootApplication
    public class DemoApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(DemoApplication.class, args);
        }
    
        class CustomEvent extends ApplicationEvent {
            public CustomEvent(HashMap<String, String> source) {
                super(source);
            }
        }
    
        @RestController
        final class TestController {
            @Autowired
            private ApplicationEventPublisher applicationEventPublisher;
    
            @RequestMapping("/publish")
            public String test(String message) {
                HashMap hashMap = new HashMap();
                hashMap.put("key", message);
                applicationEventPublisher.publishEvent(new CustomEvent(hashMap));
                return message + "发布成功";
            }
        }
    
        @Component
        class Test implements ApplicationRunner {
            @Autowired
            private ApplicationContext applicationContext;
            @Autowired
            private ApplicationEventPublisher applicationEventPublisher;
    
            @Override
            public void run(ApplicationArguments args) throws Exception {
                HashMap hashMap = new HashMap();
                hashMap.put("ss", "s1");
                applicationContext.publishEvent(new CustomEvent(hashMap));
                // 两种发生方式一致
                hashMap.put("ss", "s2");
                applicationEventPublisher.publishEvent(new CustomEvent(hashMap));
            }
        }
    
        @EventListener(value = CustomEvent.class)
        public void test(CustomEvent customEvent) {
            System.out.println("getUserEvent-接受到事件:" + customEvent);
        }
    
        @EventListener(value = CustomEvent.class)
        public void test2(CustomEvent customEvent) {
            System.out.println("getUserEvent2-接受到事件:" + customEvent);
        }
    }
    
    
  • 相关阅读:
    python模块之StringIO/cStringIO(内存文件)
    python3之json模块使用
    使用chardet判断编码方式
    HBase笔记之远程Shell界面命令行无法删除字符的解决方案
    Linux命令之uptime
    Redis笔记之常用命令
    Spring Boot笔记之自定义启动banner
    Windows Live Writer博客草稿迁移的一种解决方案
    ActiveMQ笔记之安装(Linux)
    Impala笔记之通用命令
  • 原文地址:https://www.cnblogs.com/jiangdewen/p/15235339.html
Copyright © 2011-2022 走看看