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);
}
}