在项目启动时始终报错@Value(${})值找不到。 无法解析占位符中的值。 1.着重检查nacos、springcloud、springcloudalibaba等相关版本号是否对应的上。参考:官方文档版本说明 2.检查项目中的依赖是否添加:官方文档描述
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
3.检查项目中配置文件优先级。又很对人在之前cloud版本中都是用的application.yml,这里我们需要使用bootstrap.yml,它的优先级大于application.yml。
spring:
application:
name: nacos-config-demo
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
namespace:
group: DEFAULT_GROUP
config:
server-addr: 127.0.0.1:8848
file-extension: yaml
namespace:
group: DEFAULT_GROUP
prefix: nacos-config-demo
dataID完整格式如下:
在 Nacos Spring Cloud 中,dataId 的完整格式如下:
${prefix}-${spring.profiles.active}.${file-extension}
prefix 默认为 spring.application.name 的值,也可以通过配置项 spring.cloud.nacos.config.prefix来配置。 spring.profiles.active 即为当前环境对应的 profile,详情可以参考 Spring Boot文档。 注意:当 spring.profiles.active 为空时,对应的连接符 - 也将不存在,dataId 的拼接格式变成
p
r
e
f
i
x
.
{prefix}.
prefix.{file-extension} file-exetension 为配置内容的数据格式,可以通过配置项 spring.cloud.nacos.config.file-extension 来配置。目前只支持 properties 和 yaml 类型。 ${prefix}取值默认为项目名 也可以自由配置,声明我们需要的配置文件
${spring.profiles.active} 为项目指定的环境,例如dev。项目中不配置则为空,也不拼接 - ${file-extension}为指定的文件类型 例如我的项目没有指定spring.profiles.active,则最终拼接的文件名称为: nacos-config-demo.yaml 如果我指定了spring.profiles.active=dev则最终拼接文件名为: nacos-config-demo-dev.yaml
4.如果以上都没解决问题,再次检查pom文件依赖是否引入spring-cloud-starter-bootstrap包。
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
<version>3.1.0</version>
</dependency>
|