解决nacos升级spring|解决nacos升级spring cloud 2020.0无法使用bootstrap.yml的问题
nacos升级spring cloud 2020.0无法使用bootstrap.yml
之前用spring cloud整合nacos,需要一个bootstrap.yml作为spring启动的初始化配置
bootstrap.yml内容大概如下:
spring:application:# 应用名称name: xxxprofiles:active: devcloud:nacos:config:file-extension: ymlserver-addr: localhost:8848username: nacospassword: nacos
把spring cloud升级到2020.0.x以后,nacos就读不到bootstrap.yml了
spring官方其实在change note中说明了,在新版中将spring.cloud.bootstrap.enabled默认设置为false不启用:
https://github.com/spring-cloud/spring-cloud-release/wiki/Spring-Cloud-2020.0-Release-Notes#breaking-changes
源码部分如下:
/* * Copyright 2013-2020 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * *https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */package org.springframework.cloud.util; import org.springframework.core.env.Environment; import org.springframework.util.ClassUtils; public abstract class PropertyUtils { /*** Property name for checking if bootstrap is enabled.*/ public static final String BOOTSTRAP_ENABLED_PROPERTY = "spring.cloud.bootstrap.enabled"; /*** Property name for spring boot legacy processing.*/ public static final String USE_LEGACY_PROCESSING_PROPERTY = "spring.config.use-legacy-processing"; /*** Property name for bootstrap marker class name.*/ public static final String MARKER_CLASS = "org.springframework.cloud.bootstrap.marker.Marker"; /*** Boolean if bootstrap marker class exists.*/ public static final boolean MARKER_CLASS_EXISTS = ClassUtils.isPresent(MARKER_CLASS, null); private PropertyUtils() {throw new UnsupportedOperationException("unable to instatiate utils class"); } /*** 判断是否启用bootstrap.yml的时候默认设置成了false*/ public static boolean bootstrapEnabled(Environment environment) {return environment.getProperty(BOOTSTRAP_ENABLED_PROPERTY, Boolean.class, false) || MARKER_CLASS_EXISTS; } public static boolean useLegacyProcessing(Environment environment) {return environment.getProperty(USE_LEGACY_PROCESSING_PROPERTY, Boolean.class, false); }}
解决方案是在vm启动参数中增加-Dspring.cloud.bootstrap.enabled=true,或者增加spring-cloud-starter-bootstrap依赖,至于spring cloud alibaba nacos后续是否能支持application.yml,目前alibaba官方还没有回复
nacos避坑指南!nacos 配置中心无法加载bootstrap.yml/properties配置文件 在使用nacos时引入以下两个依赖:
com.alibaba.cloud spring-cloud-starter-alibaba-nacos-discoverycom.alibaba.cloud spring-cloud-starter-alibaba-nacos-config
错误异常信息:
com.alibaba.nacos.api.exception.NacosException: java.lang.reflect.InvocationTargetException解决方案:加入以下依赖即可
......
Caused by: java.lang.reflect.InvocationTargetException: null
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[na:1.8.0_211]
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) ~[na:1.8.0_211]
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[na:1.8.0_211]
at java.lang.reflect.Constructor.newInstance(Constructor.java:423) ~[na:1.8.0_211]
at com.alibaba.nacos.api.config.ConfigFactory.createConfigService(ConfigFactory.java:42) ~[nacos-api-1.1.1.jar:na]
... 34 common frames omitted
Caused by: com.alibaba.nacos.api.exception.NacosException: endpoint is blank
org.springframework.cloud spring-cloud-starter-bootstrap3.0.1
配置文件:
文章图片
文章图片
在启动服务后的第一条日志信息:
【解决nacos升级spring|解决nacos升级spring cloud 2020.0无法使用bootstrap.yml的问题】上面的 【conpon-service.properties】添加到nacos中
文章图片
文章图片
补充一下:nacos配置修改后,项目中要动态实时更新,项目中需要动态配置,在congtroller中加入一个注解
@RefreshScope // 动态刷新nacos配置
即可。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
推荐阅读
- parallels|parallels desktop 解决网络初始化失败问题
- 考研英语阅读终极解决方案——阅读理解如何巧拿高分
- jhipster|jhipster 升级无效问题
- MybatisPlus|MybatisPlus LambdaQueryWrapper使用int默认值的坑及解决
- SpringBoot调用公共模块的自定义注解失效的解决
- 解决SpringBoot引用别的模块无法注入的问题
- gitlab|Gitlab升级(12.2.1到14.6.4)
- Spark|Spark 数据倾斜及其解决方案
- 解决SyntaxError:|解决SyntaxError: invalid syntax
- GIS跨界融合赋能多领域技术升级,江淮大地新应用成果喜人