@Value注解拼接静态变量
2020.11.10
sherryriver
流水账技术
 pv:
在spring项目中一般获取配置文件内容使用**@Value**就可以,但是如果是static修饰的字段显然就不行了。
为什么static修饰的字段就不能通过@Value设置值呢,这是因为@Value设置值是通过spring容器来ioc设置值的,可是static修饰的字段在构造函数之前就加载完了,所以是没办法通过@Value来设置值。
解决方法:
通过非静态set方法将配置文件赋值给静态变量
@Component public class PathConstants {
public static String GLOBAL_CONF_ROOT;
@Value("${conf.path}") public void setConfPath(String confPath) { GLOBAL_CONF_ROOT = confPath; }
}
|
如果继续拼接静态变量的话,可以在set方法里直接拼接赋值
@Component public class PathConstants {
public static String GLOBAL_CONF_ROOT;
@Value("${conf.path}") public void setConfPath(String confPath) { GLOBAL_CONF_ROOT = confPath; GLOBAL_CONF_FILE_PATH = GLOBAL_CONF_ROOT + "config.json"; BATCH_REGISTER_FILE_PATH = GLOBAL_CONF_ROOT + "RATemplate/"; BATCH_REGISTER_ERROR_FILE_PATH = GLOBAL_CONF_ROOT + "RATemplate/error/"; CA_SERVICE_CERT_FILE_PATH = GLOBAL_CONF_ROOT + "caCert.cer"; }
public static String GLOBAL_CONF_FILE_PATH;
public static String BATCH_REGISTER_FILE_PATH;
public static String BATCH_REGISTER_ERROR_FILE_PATH;
public static String CA_SERVICE_CERT_FILE_PATH; }
|