标签:res listen turn mapping ota 后端 个人 hang 总结
Spring Boot应用程序事件允许我们发送和接收特定应用程序事件,我们可以根据需要处理这些事件。事件用于在松散耦合的组件之间交换信息。由于发布者和订阅者之间没有直接耦合,因此可以在不影响发布者的情况下修改订阅者,反之亦然。学习该技术可以很好的把握后端程序的运行与出错回滚,技术的难点在于如何创建、发布和侦听自定义事件。
创建ApplicationEvent
class UserCreatedEvent extends ApplicationEvent {
private String name;
UserCreatedEvent(Object source, String name) {
super(source);
this.name = name;
}
...
}
用户注册服务发布者
@Service
public class UserService {
@Autowired
private ApplicationEventPublisher applicationEventPublisher;
public void register(String name) {
System.out.println("用户:" + name + " 已注册!");
applicationEventPublisher.publishEvent(new UserRegisterEvent(name));
}
}
创建事件订阅者
@Service
public class EmailService implements ApplicationListener<UserRegisterEvent> {
@Override
public void onApplicationEvent(UserRegisterEvent userRegisterEvent) {
System.out.println("邮件服务接到通知,给 " + userRegisterEvent.getSource() + " 发送邮件...");
}
}
SpringBoot 测试启动类
@SpringBootApplication
@RestController
public class EventDemoApp {
public static void main(String[] args) {
SpringApplication.run(EventDemoApp.class, args);
}
@Autowired
UserService userService;
@RequestMapping("/register")
public String register(){
userService.register("zhangsan");
return "success";
}
}
在Spring Boot中使用自带的事件机制前需要进行配置META-INF/spring.factories文件,并在文件中实现,针对其使用也有两种方式,最开始自己在这方面花费了大量时间,最后依靠百度、CSDN等平台解决了问题。
// 第一种方式
public class AiInfluxdbApplicationListener implements GenericApplicationListener {
@Override
public int getOrder() {
return Ordered.LOWEST_PRECEDENCE;
}
@Override
public boolean supportsEventType(ResolvableType eventType) {
return ApplicationReadyEvent.class.isAssignableFrom(eventType.getRawClass());
}
@Override
public void onApplicationEvent(ApplicationEvent event) {
System.out.print("here is ApplicationReadyEvent");
}
}
//第二种方式
public class ConfigApplicationListener implements ApplicationListener<ApplicationEnvironmentPreparedEvent>, Ordered {
@Override
public int getOrder() {
return HIGHEST_PRECEDENCE;
}
@Override
public void onApplicationEvent(ApplicationEnvironmentPreparedEvent event) {
}
}
//META-INF/spring.factories文件定义
org.springframework.context.ApplicationListener=com.demotest.core.ApplicationStartListener
本次技术博客从我自己的经历开始,介绍了Spring Boot框架中事件从创建到测试的整个过程以及代码,以及自身最开始对于事件的使用方式。
Spring 中的事件机制 ApplicationEventPublisher
springBoot的事件机制GenericApplicationListener用法解析
标签:res listen turn mapping ota 后端 个人 hang 总结
原文地址:https://www.cnblogs.com/hsx479/p/13189891.html