导航
导航

@Value注解拼接静态变量

在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方法里直接拼接赋值

/**
* 配置文件常量
*
* @author
*/
@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;
/**
* CA证书文件路径
*/
public static String CA_SERVICE_CERT_FILE_PATH;
}