也叫发布订阅模式,一般使用场景为A模块做出变更的同时通知B模块也得做出变更,例如上传视频,先将视频上传到服务端,然后由服务端上传到云端。
使用方法:1、添加事件
package com.px.eleven.system.listen;
import lombok.Getter;
import lombok.Setter;
import org.springframework.context.ApplicationEvent;
public class LoginEvent extends ApplicationEvent {
@Getter
@Setter
private String loginName;
public LoginEvent(Object source) {
super(source);
}
public LoginEvent(Object source, String loginName) {
super(source);
this.loginName=loginName;
}
}
2、添加事件监听
package com.px.eleven.system.listen; import org.springframework.context.ApplicationListener; import org.springframework.stereotype.Component; @Component public class LoginListener implements ApplicationListener{ @Override public void onApplicationEvent(LoginEvent event) { System.err.println("进入逻辑处理"); System.err.println(event); } }
3、触发事件
package com.px.eleven.system.controller;
import cn.hutool.extra.spring.SpringUtil;
import com.px.eleven.system.listen.LoginEvent;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import java.util.HashMap;
import java.util.Map;
@RestController
@RequestMapping("login")
public class LoginController {
@GetMapping("/login")
public Map login(){
//做登录的一些操作
...
//触发
LoginEvent loginEvent=new LoginEvent("null","pengxiang");
SpringUtil.getApplicationContext().publishEvent(loginEvent);
return map;
}
}



