springboot3.x只需两步快速整合nacos作配置中心
一、下载依赖
我在网上找了各种资料,都是要先确定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_namecloud:nacos:config:server-addr: your_addrnamespace:your_namespaceaccess-key: #有就填没有就不填secret-key: #有就填没有就不填file-extension: yamlencode: UTF-8connect-timeout: 5000 # 连接超时时间(毫秒)read-timeout: 30000 # 读取超时时间(毫秒)# 本地配置(仅用于开发测试,生产环境应从Nacos获取)
app:registration-switch: truelocal-config: falselog-dir: ./logenv-type: devlogging:level:com.alibaba.nacos.client: TRACEorg.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 {@Autowiredprivate 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;@Overridepublic 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传递namespaceConfigService 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();}}
}
日志打印: