声明:本文仅为个人观点,如有不当还请指出。
简介
本文采用spring事件监听机制,来进行项目启动时的部分数据缓存,并处理redis和数据库的一致性问题。
环境构建
练习采用Gradle构建,如果使用Maven仅限参考。
plugins {
id 'org.springframework.boot' version '2.3.7.RELEASE'
id 'io.spring.dependency-management' version '1.0.10.RELEASE'
id 'java'
}
dependencies {
//redis
implementation 'org.springframework.boot:spring-boot-starter-data-redis'
implementation 'org.apache.commons:commons-pool2'
//web依赖
implementation 'org.springframework.boot:spring-boot-starter-web'
//springBoot
implementation 'org.springframework.boot:spring-boot-starter'
testImplementation('org.springframework.boot:spring-boot-starter-test') {
exclude group: 'org.junit.vintage', module: 'junit-vintage-engine'
}
正文
自定义一个CacheEvent继承自ApplicationEvent(所有应用程序事件扩展类)。
我们可以在CacheEvent中,定义一些字段通过构造器的方式进行传递信息或一些拓展实现。
public class CacheEvent extends ApplicationEvent {
/**
* Create a new {@code ApplicationEvent}.
*
* @param source the object on which the event initially occurred or with
* which the event is associated (never {@code null})
*/
//信息
private String msg;
//加载顺序
private int loadOrder;
public RedisEvent(Object source, String msg,int LoadOrder) {
super(source);
this.msg = msg;
this.loadOrder = LoadOrder;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public int getLoadOrder() {