大家在用spring读取配置文件中的数据的时候,一定用过@Value这个注解。但有时候如果我们想要给静态变量赋值发现就不管用了,给静态变量赋值,要把@Value注解放到静态变量的set方法上。
最近的项目有这样一个需求,就是类中有几个静态变量,初始化的时候,他们的值需要读取一个配置文件,获取一个code,然后用这个code拼接而成。 这个code不是静态的变量,怎么实现的呢,代码如下:
@Value("${projectCode}")
private String projectCode;
public static String COOPERATIVE_GOV_TEMPLATE_KEY ;
// 消息短信配置
public static String DEPOLY_KEY;
// 消息短信详情配置
public static String MSG_DEPOLY_KEY;
// 过滤配置
public static String MSG_FILTER_KEY;
@PostConstruct
public void init() {
COOPERATIVE_GOV_TEMPLATE_KEY = projectCode + ":template";
DEPOLY_KEY = projectCode + ":depoly";
MSG_DEPOLY_KEY = projectCode + ":msgDepoly";
MSG_FILTER_KEY = projectCode + ":msgFilter";
}
这样当项目启动的时候,这几个静态变量就有有值了。 一定要注意这个类要被spring管理,也就是要用@Controller,@Service,@Component等注解注释。