一、下载依赖
我在网上找了各种资料,都是要先确定springcloud版本,实际操作却可能由于版本或者镜像或者maven等问题报红,出现各种情况。
实际只需要指定特定版本号就行,添加下面两个依赖
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<version>2023.0.1.0</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
<version>4.2.0</version>
</dependency>
二、添加依赖后,在你的src---resources目录下新建一个bootstrap.yml文件,输入nacos的配置信息即可
spring:
config:
import: "nacos:your_data_id?group=your_group"
application:
name: your_name
cloud:
nacos:
config:
server-addr: your_addr
namespace:your_namespace
access-key: #有就填没有就不填
secret-key: #有就填没有就不填
file-extension: yaml
encode: UTF-8
connect-timeout: 5000 # 连接超时时间(毫秒)
read-timeout: 30000 # 读取超时时间(毫秒)
# 本地配置(仅用于开发测试,生产环境应从Nacos获取)
app:
registration-switch: true
local-config: false
log-dir: ./log
env-type: dev
logging:
level:
com.alibaba.nacos.client: TRACE
org.springframework.cloud.nacos: DEBUG
启动项目就可以了,在启动日志中会有nacos的链接信息
可以写个测试类,测试是否能拿到nacos中配置的配置信息:
package com.config;
import com.alibaba.nacos.api.NacosFactory;
import com.alibaba.nacos.api.config.ConfigService;
import com.alibaba.nacos.api.exception.NacosException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.CommandLineRunner;
import org.springframework.core.env.ConfigurableEnvironment;
import org.springframework.core.env.EnumerablePropertySource;
import org.springframework.stereotype.Component;
import java.util.Properties;
@Component
public class NacosConfig implements CommandLineRunner {
@Autowired
private ConfigurableEnvironment env;
@Value("${spring.cloud.nacos.config.server-addr}")
private String serverAddr;
@Value("${spring.cloud.nacos.config.namespace}")
private String namespace;
@Value("${spring.cloud.nacos.config.access-key}")
private String accessKey;
@Value("${spring.cloud.nacos.config.secret-key}")
private String secretKey;
@Value("${MYSQL.Host}")
private String mysqlHost;
@Override
public void run(String... args) throws InterruptedException {
System.out.println("等待Nacos配置加载...");
// Thread.sleep(3000);
// 直接使用import中的dataId和group(固定值)
String dataId = "your_data_id"; // 与import中的dataId一致
String group = "your_group"; // 与import中的group一致
try {
Properties properties = new Properties();
properties.put("serverAddr", serverAddr);
properties.put("namespace", namespace);
properties.put("accessKey", accessKey);
properties.put("secretKey", secretKey);
properties.put("tenant", namespace); // 阿里云MSE可能需要通过tenant传递namespace
ConfigService configService = NacosFactory.createConfigService(properties);
String content = configService.getConfig(dataId, group, 5000);
System.out.println("从 Nacos 获取的配置内容:\n" + content);
// 尝试获取业务配置(如MYSQL.Host)
System.out.println("mysqlHost = " + mysqlHost); // 直接使用@Value注入
} catch (NacosException e) {
System.err.println("连接 Nacos 失败: " + e.getErrMsg());
e.printStackTrace();
}
}
}
日志打印: