spring cloudalibaba 整合nacos动态配置的时候项目启动报错:
package pers.miracle.miraclecloud.system.controller;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @author lgn
* @version 1.0
* @date 2021/10/25 10:51
*/
@RestController
@RequestMapping("/nacos/nacosHelper")
@RefreshScope
public class NacosController {
@Value("${common.name}")
private String name;
@Value("${common.info}")
private String info;
@RequestMapping("/getNacosInfo")
public String get() {
return "娱乐圈重磅曝光:"+name+info;
}
}
Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'scopedTarget.nacosController': Injection of autowired dependencies failed; nested exception is java.lang.IllegalArgumentException: Could not resolve placeholder 'name' in value "${name}"
检查一下配置文件:
bootstrap.yml:
application.yml:
打开nacos配置页面查看:
查看一下 Data ID: 配置格式 配置内容书写格式是否正确:
Data ID: 配置格式 是否跟 bootstrap.yml,application.yml:里面一致。
我的application.yml中的项目名是:miracle-system
命名空间是:gene
文件后缀是:yml
所以我的Data ID如下:
miracle-system-gene.yml
配置内容:
1.如果使用yaml格式的配置文件, 一定要注意Nocos中配置的书写格式, 注意空格, 如果不输入空格,
使用@Value(“common.name”)会找不到对应的配置参数, 启动服务的时候会报错
在尝试中意外发现可以使用@Value(“common:name”)来获取配置参数, 获取到的是name:zhans 这段字符串.
错误例子:
common:
name:吴亦凡
正确例子:
common:
name: 吴亦凡
info: 大碗宽面!