标签:stc turn 覆写 cat class 一些事 ota color imp
1. 如果在应用中发生了某些事件,事件会被拦截和处理就好了,这样就有了很大的灵活性,至少代码不会紧密的耦合在一起。
我们主动的发布一些事情,然后让一下代码监听事情的发生,然后处理事情,如果有必要可以为事件添加一些属性。
2. 几个类:
3. 一个demo:
自定义事件:
import org.springframework.context.ApplicationEvent; public class PermissionNeedReloadEvent extends ApplicationEvent { public PermissionNeedReloadEvent(Object source) { super(source); } }
自定义事件处理器:
import com.haonan.event.events.PermissionNeedReloadEvent; import org.springframework.context.ApplicationListener; import org.springframework.stereotype.Component; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; @Component // 通过注解把当前的事件处理器注入到spring容器中去 public class PermissionNeedReloadEventHandler implements ApplicationListener<PermissionNeedReloadEvent> { @Override public void onApplicationEvent(PermissionNeedReloadEvent permissionNeedReloadEvent) { System.out.println(Thread.currentThread().getName() + "------------------出事啦 @" + LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); // 这里我读取数据库中的权限信息,加载到内存中去,或者干一些其他相关的事情 } }
事件发布代码:
import com.haonan.event.events.PermissionNeedReloadEvent; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ApplicationContext; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class TestController { @Autowired private ApplicationContext app; @GetMapping("/hello") public String addRole() { // 这里系统中添加一些角色信息 // 逻辑代码 // 当系统添加了角色信息,需要产生一个权限需要被重新加载的事件 app.publishEvent(new PermissionNeedReloadEvent(this)); return "success"; } }
标签:stc turn 覆写 cat class 一些事 ota color imp
原文地址:https://www.cnblogs.com/luohaonan/p/11853450.html