简介
在开发项目的时候,有些资源是需要放在redis里面,一般是以key-value的形式存放。为了区分,key通常会带有一个前缀。后来,项目多了,而redis用的还是同一个,这时有可能会产生冲突。为了解决这样的冲突,需要在固定的前缀前加上项目名做隔离。由于key的前缀定义在一个公用web配置包里,和具体的web项目名称不在同一个地方,所以直接修改前缀是不可行的。最后用了Java的反射机制在项目运行的时候获取项目名并且改变原有前缀。
代码实现
@Component
public class RedisConstants {
private static String moduleName;
//此处需要把字符串改为new String的形式,否则不成功
public static final String REDIS_USER_CACHE = new String("redis_user_cache");
// 获取项目名
@Value("${spring.application.name}")
private void setModuleName(String m) {
moduleName = m;
try {
setStaticFinal(RedisConstants.class.getField("REDIS_USER_CACHE"),
moduleName + RedisConstants.REDIS_USER_CACHE);
}catch (Exception e){}
}
private static void setStaticFinal(Field field, Object newValue) throws Exception {
field.setAccessible(true);
Field