在web应用的开发中,经常会需要使用一些常量,比如文件存放路径。比较愚蠢的办法就是在代码中直接使用字符串。这样做的弊端是显而易见的,使得项目的维护变得困难。
这里提供两种常用的办法:
1.定义一个类专门来存储这些静态常量,示例如下:
/**
* 定义常量的类
*/
public Class SystemVariable{
public static final String IMG_PATH = "/file/img";
public static final String REDIS_USER_MAP_PATH = "userMap";
//...
}
@Component
public Class RedisHelper{
@Autowired
private RedisTemplate redisTemplated; //redis
/*
* 根据userId从Redis中获取user
*/
public User getUser(int userId){
return (User)redisTemplated.opsForHash().get(SystemVariable.REDIS_USER_MAP_PATH, userId);
}
}
这种方式的好处是引用简单,坏处是将配置写到了java代码而非配置文件中,如果系统部署后还要修改这部分的配置就会比较麻烦。
2.放在配置文件里,然后利用spring的@Value(“name”)来使用。
//application.properties
REDIS_USER_MAP_PATH: "userMap"
@Component
public Class RedisHelper{
@Autowired
private RedisTemplate redisTemplated; //redis
@Value(name="${REDIS_USER_MAP_PATH}")
private String userPath;
/*
* 根据userId从Redis中获取user
*/
public User getUser(int userId){
return (User)redisTemplated.opsForHash().get(userPath, userId);
}
}
这种方式的好处是将配置写入配置文件,部署时无需修改代码而是直接修改配置文件。
总结:比较以上两种方式可以发现,第一种方式使用更为简单——只需要Class.VariableName即可,而第二种方式需要对配置文件进行管理,且使用较为麻烦。对于无需部署或部署后不需要修改的推荐使用第一种方式,主要还是应用于个人练习项目,而对于正式的工程系统还是推荐使用第二种方式。