SpringBoot 分模块开发注值失败问题
问题出现
在Spring Boot分模块开发时。当天 @Value 注值正常注入。而在第二天时运行项目突然报 @Value 注值失败。通过查找大量文献后,并查看打包后的 jar 包还是没有发现问题是如何生成的。
解决方案流程
- static 属性注值方式
去掉属性前 static,或者在 setXXX() 方法上注值- 注值类上加 @Component 注解,并加上@ConfigurationProperties(prefix = “application-common.yml”)
- 项目是分模块开发,启动类模块中 yml 文件应导入注值类中的 yml 文件
- 以上解决方案若还是没有解决的话。
4.1. 删除 maven 本地仓库中 jar 包,重新下载。(有可能 maven 本地仓库中 jar 丢失),若还是未解决
4.2. 重构项目。(可能项目构架一些包丢失。可以 100% 解决问题)
详解
static 注值
// 方案一
@Value("${wx.app-id}")
private String appId;
// 方案二
@Value("${wx.app-id}")
public void setWxAppId(String appId) {
appId = appId;
}
类
@ConfigurationProperties(prefix = "application-common.yml")
@Component("MicroAppUtil")
public class MicroAppUtil {
}
yml 文件配置
spring:
profiles:
#引用application-common.yml文件
active: common
include: common
application:
name: tianyutong-system #指定服务名