Springboot整合nacos实现配置中心及服务发现

一、概述

首先,nacos是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。而springboot能够创建一个独立运行spring应用框架,因此,springboot整合nacos,可以更方便实现服务的发现、配置管理等相关功能。

二、springboot是如何整合nacos?

1.在pom文件中添加nacos依赖。

csharp 复制代码
<dependency>
			<groupId>com.alibaba.cloud</groupId>
			<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
			<version>2021.0.5.0</version>
		</dependency>
		<dependency>
			<groupId>com.alibaba.cloud</groupId>
			<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
			<version>2021.0.5.0</version>
		</dependency>
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-bootstrap</artifactId>
			<version>3.1.3</version>
		</dependency>

注:这里用的spring版本是2.6.0。

2.配置nacos。

在bootstrap.properties或bootstrap.yml文件中配置nacos的相关信息。这里以bootstrap.yml为例。

csharp 复制代码
spring:
  application:
    name: my-blog#为服务名
  cloud:
    nacos:
      username: nacos
      password: nacos
      discovery:
        namespace: e50bbc31-d4bd-4f7f-852a-c5cacf3a2a24
        server-addr: localhost:8848
        register-enabled: true
        watch:
          enabled: true
      config:
        extension-configs:
          - data-id: common.properties
            refresh: true
        file-extension: properties #后缀名,只支持 properties 和 yaml 类型
        prefix: my-blog #文件名,如果没有配置则默认为 ${spring.appliction.name}
        namespace: e50bbc31-d4bd-4f7f-852a-c5cacf3a2a24
        auto-refresh: true
        enable-remote-sync-config: true #启用远程同步配置
        group: DEFAULT_GROUP  #配置组
        refresh-enabled: true
        server-addr: localhost:8848

3.使用nacos配置。

我们可以在SpringBoot应用中,通过@Value注解或在application.yml中,你可以通过占位符${...}来引用nacos中的配置。

csharp 复制代码
@Component  
@ConfigurationProperties(prefix = "blog")  
public class MyConfigProperties {  
    private String property;  
}
csharp 复制代码
import lombok.Data;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.stereotype.Component;

@Component
@Data
@RefreshScope
public class MyConfig {
    /**
     * url地址
     */
    @Value("${blog.url}")
    private String url;
    /**
     * 路径
     */
    @Value("${blog.path}")
    private String path;
}

其中 @RefreshScope注解实现配置动态刷新。

4.启动nacos服务发现。

csharp 复制代码
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

@SpringBootApplication  
@EnableDiscoveryClient  
public class MyApplication {  
    public static void main(String[] args) {  
        SpringApplication.run(MyApplication.class, args);  
    }  
}

接着启动应用后,就可以在nacos的服务列表中看到我们已经注册到nacos的服务。

相关推荐
知守观15 分钟前
HTML 转 PDF 方案实战:iTextPDF 与 wkhtmltopdf 踩坑复盘,附 Flying Saucer / openhtmltopdf 选型对比
java·后端
2601_9620715717 分钟前
类变量和全局变量的隔离性有什么区别?
java·开发语言·jvm
海绵宝宝转agent24 分钟前
LeetCode100 LRU缓存思路讲解
java·开发语言·缓存
专业程序开发源25 分钟前
springboot高校学生社团管理系统74810-计算机课程设计、毕业设计
java·vue.js·spring boot·后端·spring·php·课程设计
youdexiang31 分钟前
AI 生成会议纪要好用吗?多款 APP 功能分析
java·人工智能·音视频
通信瓦工1 小时前
OCP 冷却环境与冷却剂分配单元(CDU)子项目
java·开发语言
EatFan1 小时前
从云原生到AI原生:2026后端架构“三驾马车”(事件驱动、虚拟线程、AI Agent内嵌)演进解析
spring boot·云原生·架构·虚拟线程·ai-native·ai agent·spring ai
Cc.Y2 小时前
Java零基础入门:类与对象深度掌握 —— 从“零散变量“到“打包管理“
java·开发语言·python
\光辉岁月/2 小时前
2.java变量
java·开发语言·变量
Wang's Blog2 小时前
Java 项目实战: 外卖平台优化-前端dist部署与Nginx反向代理rewrite
java·前端·nginx