application.yml spring配置如下:
# Spring配置
spring:
application:
name: fitness-admin
# 资源信息
messages:
# 国际化资源文件路径
basename: i18n/messages
profiles:
# 配置文件指向 正式:dev 生产:prop 测试:test
active: dev
# 文件上传
servlet:
multipart:
# 单个文件大小
max-file-size: 5000MB
# 设置总上传的文件大小
max-request-size: 5000MB
# 服务模块
devtools:
restart:
# 热部署开关
enabled: true
我们在做项目中通常会把配置分为多个环境,例如正式dev、生产prop、测试test等等
这时会新建一个读取配置类来读取,例如:
@Component
@ConfigurationProperties(prefix = "gpframework")
public class GpframeworkConfig {
/**
* 项目名称
*/
private String name;
/**
* 版本
*/
private String version;
/**
* 版权年份
*/
private String copyrightYear;
/**
* 实例演示开关
*/
private boolean demoEnabled;
/**
* 验证码类型
*/
private static String captchaType;
/**
* 上传路径
*/
private static String profile;
/**
* 图片前缀路径
*/
private static String prePath;
/**
* 图片前缀路径
*/
private static String shelvesImportTemplate;
public static String getPrePath() {
return prePath;
}
public void setPrePath(String prePath) {
GpframeworkConfig.prePath = prePath;
}
public static String getShelvesImportTemplate() {
return shelvesImportTemplate;
}
public void setShelvesImportTemplate(String shelvesImportTemplate) {
GpframeworkConfig.shelvesImportTemplate = shelvesImportTemplate;
}
/**
* 获取地址开关
*/
private static boolean addressEnabled;
public static String getCaptchaType() {
return captchaType;
}
public void setCaptchaType(String captchaType) {
GpframeworkConfig.captchaType = captchaType;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getVersion() {
return version;
}
public void setVersion(String version) {
this.version = version;
}
public String getCopyrightYear() {
return copyrightYear;
}
public void setCopyrightYear(String copyrightYear) {
this.copyrightYear = copyrightYear;
}
public boolean isDemoEnabled() {
return demoEnabled;
}
public void setDemoEnabled(boolean demoEnabled) {
this.demoEnabled = demoEnabled;
}
public static String getProfile() {
return profile;
}
public void setProfile(String profile) {
GpframeworkConfig.profile = profile;
}
public static boolean isAddressEnabled() {
return addressEnabled;
}
public void setAddressEnabled(boolean addressEnabled) {
GpframeworkConfig.addressEnabled = addressEnabled;
}
/**
* 获取头像上传路径
*/
public static String getAvatarPath() {
return getProfile() + "/avatar";
}
/**
* 获取下载路径
*/
public static String getDownloadPath() {
return getProfile() + "/download/";
}
/**
* 获取上传路径
*/
public static String getUploadPath() {
return getProfile() + "/upload";
}
}
以上用来读取application-dev.yml里面的配置:
# 项目相关配置
gpframework:
# 名称
name: Gpinfo
# 版本
version: 1.0.0
# 版权年份
copyrightYear: 2022
# 实例演示开关
demoEnabled: true
# 文件路径,使用jvm系统变量,兼容windows和linux;
profile: ${user.dir}/gpframework/uploadPath
#图片前缀访问路径
prePath:
# 获取ip地址开关
addressEnabled: false
# 验证码类型 math 数组计算 char 字符验证
captchaType: math
# 货架导入模板地址
shelvesImportTemplate: shelvesImportTemplate.xlsx
因为是静态所以可以直接使用 GpframeworkConfig.getgetPrePath() 来访问
但是在前段时间我新加了一个配置:
# 阿里云身份证实名认证接口AppCode aliyunIdCheckAppCode: XXX
然后读取
/**
* 阿里云身份证实名认证接口AppCode
*/
private static String aliyunIdCheckAppCode;
public static String getAliyunIdCheckAppCode() {
return aliyunIdCheckAppCode;
}
public static void setAliyunIdCheckAppCode(String aliyunIdCheckAppCode) {
GpframeworkConfig.aliyunIdCheckAppCode = aliyunIdCheckAppCode;
}
这时会发现怎么读取都是null, 最后找了半天才发现是 setter 的问题
不能把 setter 设为静态方法,否则设置不了值,最后把 static 去掉就能正常读取了。