场景:
springcloud 的服务 service-order 启动和运行正常
application.yml内容
server: port: 8007 servlet: context-path: /service-order spring: cloud: nacos: discovery: server-addr: 192.168.56.30:8848 application: name: service-order redis: host: 192.168.56.30 port: 6379 database: 0 password: root --- spring: profiles: 8007 server: port: 8007 --- spring: profiles: 8008 server: port: 8008
修改使用nacos配置中心,将配置信息移到配置中心,启动后报错:
bootstrap.yml
spring: cloud: nacos: config: server-addr: 192.168.56.30:8848 namespace: devId file-extension: yaml application: name: service-order profiles: #指定使用的配置文件 active: dev # service-order-dev.yaml
nacos配置中心新建配置项:service-order-dev.yaml
server: port: 8007 servlet: context-path: /service-order spring: cloud: nacos: discovery: server-addr: 192.168.56.30:8848 application: name: service-order redis: host: 192.168.56.30 port: 6379 database: 0 password: root --- spring: profiles: 8007 server: port: 8007 --- spring: profiles: 8008 server: port: 8008
报错信息:
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'redisConfig': Injection of autowired dependencies failed; nested exception is java.lang.IllegalArgumentException: Could not resolve placeholder 'spring.redis.host' in value "${spring.redis.host}"
报错原因:
配置信息没有加载
问题排查
1 排查bootstrap.yml的配置问题
发现都是正确的,那么就是新的
2 查看 service-order-dev.yaml 配置是否正确
这里的内容是从原来的application.yml完全拷贝,原来的程序运行正常
但是仔细一看配置最后有 --- 三个破折号,这个是文件分割的标识。
而nacos配置中心,是一个文件一个内容,这样会产生异常
解决问题:
需要删除最后 --- 的几行
最终 service-order-dev.yaml 配置信息如下:
server: port: 8007 servlet: context-path: /service-order spring: cloud: nacos: discovery: server-addr: 192.168.56.30:8848 application: name: service-order redis: host: 192.168.56.30 port: 6379 database: 0 password: root
这时启动正常。
总结:
出现下面问题时,一般需要查看配置文件是否有错误,是否生效
Could not resolve placeholder 'spring.redis.host' in value "${spring.redis.host}"
标签:creating,service,autowired,redisConfig,spring,192.168,server,port,order From: https://www.cnblogs.com/etangyushan/p/18316547