文章目录
- 问题现象(一)
- 解决方法(一)
- 问题现象(二)
- 解决方法(二)
- 问题现象(三)
- 解决方法(三)
问题现象(一)
Spring Cloud Alibaba Nacos 2022.X 可以使用extension-configs属性读取多个nacos配置文件,配置示例文件如下:
spring:
application:
name: groupinnovation
spring.cloud.nacos:
config:
username: test
password: xxx
server-addr: 127.0.0.1:8848
namespace: ${nacos.namespace:dev} # 可以读取环境变量配置
group: DEFAULT_GROUP
enabled: true # 默认为true,可以不配
refresh-enabled: true # 默认为true,可以不配
fileExtension: yml
extension-configs:
- data-id: groupinnovation-database.yml
group: ${spring.cloud.nacos.config.group}
refresh: true
- data-id: groupinnovation.yml # 默认会读取(应用名一致的配置文件),手动配置方便维护
group: ${spring.cloud.nacos.config.group}
refresh: true
但是在2023.X版本中配置extension-configs属性会报错(启动项目也读取不到配置文件),如下图所示:
解决方法(一)
1、使用spring.config.import属性导入配置
2、username、password、server-addr需要改为和config同级,即用户名密码注册中心、配置中心公用。
参考spring-configuration-metadata.json,其他属性(namespace、group、refresh-enabled等)没有公用配置。
配置示例如下:
spring:
application:
name: groupinnovation
spring.cloud.nacos:
username: test
password: xxx
server-addr: 127.0.0.1:8848
discovery:
namespace: ${nacos.namespace:groupinnovation-dev} # 可以读取环境变量配置
group: DEFAULT_GROUP
config:
namespace: ${nacos.namespace:groupinnovation-dev} # 可以读取环境变量配置
group: DEFAULT_GROUP
refresh-enabled: true # 默认为true,可以不配
spring.config:
import:
- nacos:groupinnovation.yml
- nacos:groupinnovation-database.yml
问题现象(二)
引入spring-cloud-starter-bootstrap依赖,并且未在bootstrap.yml中配置,启动项目报logback相关错误:
Caused by: java.lang.IllegalStateException: Logback configuration error detected:
ERROR in ch.qos.logback.core.rolling.RollingFileAppender[CONFIG_LOG_FILE] - 'File' option has the same value "C:\Users\xxx/logs/nacos/config.log" as that given for appender [CONFIG_LOG_FILE] defined earlier.
ERROR in ch.qos.logback.core.rolling.RollingFileAppender[CONFIG_LOG_FILE] - Collisions detected with FileAppender/RollingAppender instances defined earlier. Aborting.
ERROR in ch.qos.logback.core.rolling.RollingFileAppender[CONFIG_LOG_FILE] - For more information, please visit http://logback.qos.ch/codes.html#earlier_fa_collision
ERROR in ch.qos.logback.core.rolling.RollingFileAppender[NAMING_LOG_FILE] - 'File' option has the same value "C:\Users\xxx/logs/nacos/naming.log" as that given for appender [NAMING_LOG_FILE] defined earlier.
ERROR in ch.qos.logback.core.rolling.RollingFileAppender[NAMING_LOG_FILE] - Collisions detected with FileAppender/RollingAppender instances defined earlier. Aborting.
ERROR in ch.qos.logback.core.rolling.RollingFileAppender[NAMING_LOG_FILE] - For more information, please visit http://logback.qos.ch/codes.html#earlier_fa_collision
ERROR in ch.qos.logback.core.rolling.RollingFileAppender[REMOTE_LOG_FILE] - 'File' option has the same value "C:\Users\xxx/logs/nacos/remote.log" as that given for appender [REMOTE_LOG_FILE] defined earlier.
ERROR in ch.qos.logback.core.rolling.RollingFileAppender[REMOTE_LOG_FILE] - Collisions detected with FileAppender/RollingAppender instances defined earlier. Aborting.
ERROR in ch.qos.logback.core.rolling.RollingFileAppender[REMOTE_LOG_FILE] - For more information, please visit http://logback.qos.ch/codes.html#earlier_fa_collision
at org.springframework.boot.logging.logback.LogbackLoggingSystem.reportConfigurationErrorsIfNecessary(LogbackLoggingSystem.java:277)
解决方法(二)
实际和LogBack配置没有任何关系,nacos相关的配置文件写在bootstrap.yml就可以了。
在Spring Cloud Alibaba Nacos 2022.X没有这个问题,即写在application.yml也可以正常启动。
问题现象(三)
Spring Cloud Alibaba Nacos 2023.X,SpringBoot 3.2.X 项目引入jasypt-spring-boot-starter 2.1.1后,nacos的账号、密码信息没法解密,spring.config.import中的配置导入失败。
问题原因:连接nacos前,jasypt没有完成解密
解决方法(三)
未找到jasypt相关解决方法,从环境变量中配置nacos的密码解决。