好呀,我是歪歪。
Spring 的事件监听机制,不知道你有没有用过,实际开发过程中用来进行代码解耦简直不要太爽。
但是我最近碰到了一个涉及到泛型的场景,常规套路下,在这个场景中使用该机制看起来会很傻,但是最终了解到 Spring 有一个优雅的解决方案,然后去了解了一下,感觉有点意思。
和你一起盘一盘。
Demo
首先,第一步啥也别说,先搞一个 Demo 出来。
需求也很简单,假设我们有一个 Person 表,每当 Person 表新增或者修改一条数据的时候,给指定服务同步一下。
伪代码非常的简单:
boolean success = addPerson(person)
if(success){
//发送person,add代表新增
sendToServer(person,"add");
}
这代码能用,完全没有任何问题。
但是,你仔细想,“发给指定服务同步一下”这样的动作按理来说,不应该和用户新增和更新的行为“耦合”在一起,他们应该是两个独立的逻辑。
所以从优雅实现的角度出发,我们可以用 Spring 的事件机制进行解耦。
比如改成这样:
boolean success = addPerson(person)
if(success){
publicAddPersonEvent(person,"add");
}
addPerson 成功之后,直接发布一个事件出去,然后“发给指定服务同步一下”这件事情就可以放在事件监听器去做。
对应的代码也很简单,新建一个 SpringBoot 工程。
首先我们先搞一个 Person 对象:
@Data
public class Person {
private String name;
public Person(String name) {
this.name = name;
}
标签:总结,15,name,success,person,Person,add,addPerson
From: https://www.cnblogs.com/lmyy/p/17966500