声明:使用 springboot2.1.1进行测试、
》
Listener是JavaWeb的三大组件(Servlet、Filter、Listener)之一,JavaWeb中的监听器主要用于监听:ServletContext、HttpSession、ServletRequest 的生命周期以及属性变化;在spring中也提供了监听器公开发人员使用;
其实现原理是设计模式之观察者模式,设计的初衷是为了系统业务之间进行解耦,以便提高系统可扩展性、可维护性。Listener 主要包括定义事件、事件监听、事件发布
事件监听:
同步监听:
异步监听 :
下面写几个监听器的demo
/ 源码分享、
https://github.com/medoo-Ai/boot-demo
Spring Boot 2.0 以后定义的事件:
ApplicationFailedEvent:Spring Boot 启动失败时触发;
ApplicationPreparedEvent:上下文 Context 准备时触发;
ApplicationReadyEvent:上下文准备完毕的时触发;
ApplicationStartedEvent:Spring Boot 启动监听类;
SpringApplicationEvent:获取 SpringApplication;
ApplicationEnvironmentPreparedEvent:装配完参数和环境后触发的事件。
项目结构如下,pojo 如图,下面不再贴出,有不清楚请了留言或者参考GitHub源代码、
1、同步监听
1、模拟用户注册事件,对其进行监听、
代码步骤:
1、用户注册
2、编写controller、service业务
3、监听
456
1、用户注册事件 UserRegisterEvent
/**
* @auther SyntacticSugar
* @data 2018/12/12 0012上午 11:20
*/
public @Data class UserRegisterEvent extends ApplicationEvent {
// user注册用户、source 事件源
private User user;
public UserRegisterEvent(Object source,User user ) {
super(source);
this.user=user;
}
}
2、 controller
访问路径 user/register
@RestController
@RequestMapping("user")
public class UserController {
@Autowired
private UserService userService;
@GetMapping("register")
public String registerUser(@NotNull String username,@NotNull Integer age){
// 返回注册 success or fail
String msg="success";
try {
userService.registerUser(new User(username,age));
} catch (Exception e) {
msg="fail";
e.printStackTrace();
}
return msg;
}
}
3、业务UserService 接口以及实现类UserServiceImpl 、
public interface UserService {
void registerUs