SpringcloudAlibaba项目读取配置错误

在SpringcloudAlibaba项目中遇到Nacos读取配置文件异常,由于IDEA默认设置项目字符集为GBK,与Nacos的UTF-8不匹配导致。通过修改项目字符集为UTF-8,解决了读取配置错误的问题。

项目场景 :SpringcloudAlibaba项目读取配置错误

com.alibaba.cloud.nacos.client.NacosPropertySourceBuilder parse data from Nacos error(读取nacos配置文件异常)

问题描述

platform-common 2022-04-21 09:22:50.193 [ main ] [,] - [ ERROR ] [ c.a.cloud.nacos.client.NacosPropertySourceBuilder : 104 ] - parse data from Nacos error,dataId:redis-test.yaml,data:spring:
redis:
password: MyNewPass4!
database: 0
host: 173.20.53.103
port: 6379
sentinelIps: 173.20.53.103:26379
masterName: mymaster
jedis:
pool:
max-active: 200
max-wait: -1
max-idle: 8
min-idle: 0
maxTotal: 500
timeout: 10000
session:
store-type: none

redisson:
#redis链接地址
address: redis://173.20.53.103:6379
#当前处理核数量 * 2
thread: 4
#指定编解码
codec: org.redisson.codec.JsonJacksonCodec;
#最小空闲连接数,默认值:10,最小保持连接数(长连接)
connectionMinimumIdleSize: 12
#连接空闲超时,单位:毫秒 默认10000;当前连接池里的连接数量超过了最小空闲连接数,
#而连接空闲时间超过了该数值,这些连接将会自动被关闭,并从连接池里去掉
idleConnectionTimeout: 10000
#ping节点超时,单位:毫秒,默认1000
pingTimeout: 1000
#连接等待超时,单位:毫秒,默认10000
connectTimeout: 10000
#命令等待超时,单位:毫秒,默认3000;等待节点回复命令的时间。该时间从命令发送成功时开始计时
timeout: 3000
#命令失败重试次数,默认值:3
retryAttempts: 2
#命令重试发送时间间隔,单位:毫秒,默认值:1500
retryInterval: 1500
#重新连接时间间隔,单位:毫秒,默认值:3000;连接断开时,等待与其重新建立连接的时间间隔
reconnectionTimeout: 3000
#执行失败最大次数, 默认值:3;失败后直到 reconnectionTimeout超时以后再次尝试。
failedAttempts: 2
#身份验证密码
password: MyNewPass4!
#单个连接最大订阅数量,默认值:5


原因分析:

由于 我的项目是新导入的,idea默认将项目字符集设为GBK,但nacos读取配置文件默认使用UTF-8遂导致问题出现

解决方案:

修改项目字符集(如下图)方可解决
在这里插入图片描述

<think>好的,我现在需要帮助用户了解如何将Spring Cloud Alibaba与SMS服务进行整合。首先,我需要回顾用户提供的引用内容,特别是引用3,那里提到了引入依赖和配置的步骤。用户需要教程、示例和配置说明,所以我得一步步来。 首先,我应该从项目创建开始。用户可能需要知道如何初始化一个Spring Boot项目,并添加必要的依赖。这里需要提到Spring Initializr,以及如何选择Spring Boot版本和添加Spring Cloud Alibaba的依赖。引用3中提到了spring-cloud-alicloud-sms的依赖,这部分必须包含进去。 接下来是配置部分。用户需要知道在application.yml或application.properties中添加阿里云的访问密钥、区域和短信服务的相关配置。例如,access-key和secret-key,这些信息需要用户从阿里云控制台获取。还要注意配置的正确位置,比如spring.cloud.alicloud下的配置项。 然后是代码实现部分。用户可能需要一个示例来展示如何发送短信。这里需要创建一个SmsService类,注入SmsClient,并调用sendSms方法。需要说明参数的含义,比如电话号码、签名、模板代码和模板参数。同时,要提醒用户替换实际的值,比如sign-name和template-code需要根据阿里云上申请的来填写。 另外,可能还需要提到如何测试这个服务,比如编写一个测试用例或者通过控制器调用。同时,需要注意异常处理,确保用户知道如何处理可能出现的错误,比如配置错误或网络问题。 用户的问题可能还涉及一些常见问题,比如依赖冲突或者配置错误,这时候需要提醒检查依赖版本是否兼容,以及配置项是否正确。引用1和引用2提到了Spring Cloud Alibaba的整体整合,可能需要提到确保整个项目Spring Cloud版本和Spring Cloud Alibaba的版本对应,避免兼容性问题。 最后,我应该生成相关问题,帮助用户进一步了解可能遇到的扩展问题,比如如何自定义配置、发送验证码的最佳实践或者如何处理发送失败的情况。这些问题需要与整合SMS服务相关,并且引导用户深入学习和解决问题。 总结一下,回答的结构应该是:创建项目→添加依赖→配置参数→编写代码→示例测试→注意事项→相关问题。需要确保每一步都清晰,并且引用正确的参考资料,特别是引用3中的依赖和配置示例。同时,保持语言简洁,避免技术术语过多,但又要足够详细让用户能够跟随操作。</think>### Spring Cloud Alibaba 整合 SMS 服务教程 #### 1. 创建项目并添加依赖 首先在 `pom.xml` 中添加 Spring Cloud Alibaba 和 SMS 服务依赖: ```xml <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alicloud-sms</artifactId> <version>2.2.10.RELEASE</version> </dependency> ``` 同时确保 Spring Cloud Alibaba 版本与 Spring Boot 兼容[^1][^3]。 #### 2. 配置阿里云参数 在 `application.yml` 中添加以下配置: ```yaml spring: cloud: alicloud: access-key: your-access-key-id # 阿里云访问密钥 secret-key: your-access-key-secret sms: region-id: cn-hangzhou # 默认短信服务区域 sign-name: your-sign-name # 短信签名 template-code: SMS_123456789 # 短信模板ID ``` 需从阿里云控制台获取 `access-key` 和 `secret-key`。 #### 3. 发送短信示例代码 ```java @Service public class SmsService { @Autowired private SmsClient smsClient; public SendSmsResponse sendVerificationCode(String phone, String code) { Map<String, String> params = new HashMap<>(); params.put("code", code); // 模板变量替换 return smsClient.sendSms( phone, // 目标手机号 "your-sign-name", // 签名 "SMS_123456789", // 模板ID params // 模板参数 ); } } ``` 调用时传入手机号与验证码即可。 #### 4. 高级配置(可选) ```yaml spring: cloud: alicloud: sms: endpoint: dysmsapi.aliyuncs.com # 自定义端点 connect-timeout: 5000 # 连接超时(ms) read-timeout: 5000 # 读取超时(ms) ``` #### 注意事项 1. 需先在阿里云开通短信服务并申请签名/模板 2. 生产环境建议使用 `@ConfigurationProperties` 管理密钥 3. 建议配合 Sentinel 实现短信限流[^2]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值