具体报错内容如下:
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'userController': Injection of autowired dependencies failed; nested exception is java.lang.IllegalArgumentException: Could not resolve placeholder 'pattern.dateformat' in value "${pattern.dateformat}"
引发此错误的代码
@Value("${pattern.dateformat}")
public String pattern;
事实上,此问题并不是由这段代码引起,而是由于bootstrap配置信息缺失,导致找不到Nacos上的资源。我的配置信息在dev的namespace中,没有配置namespace信息导致解析时默认跑到了public中寻找,当然找不到了!找不到资源并不会像想象中报Cannot find resource的错误,而是直接报无法解析placeholder的错误。
解决方法是:在bootstrap中添加如下代码
spring:
application:
name: userservice
profiles:
active: dev #这个写你的namespace的真实名称,
如果你的文档在public中,就不用写
cloud:
nacos:
discovery:
server-addr: localhost:8848
namespace: 11288221-e817-4a2e-9986-015c3d5240cc
config:
file-extension: yaml #文件名后缀
prefix: servername #文件名前缀,这里写你的服务名称
namespace: 11288221-e817-4a2e-9986-015c3d5240cc #这个就是引发问题的关键,
不写这个就报错,他就是命名空间的ID,直接去nacos复制即可。
与discovery中的配置相同。若你的文件在public中,这一行就不写,
包括上面的discovery,也不写
server-addr: localhost:8848
再次运行服务,过了!文章来源:https://www.toymoban.com/news/detail-732294.html
补充:编写bootstrap所需要的pom依赖:文章来源地址https://www.toymoban.com/news/detail-732294.html
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
<version>3.1.6</version>
</dependency>
到了这里,关于Nacos拉取配置信息失败,@Value exception is java.lang.IlleggalArgumentException: Could not resolve placeholder的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!