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的服务。

相关推荐
艾迪的技术之路6 分钟前
redisson使用lock导致死锁问题
java·后端·面试
今天背单词了吗98024 分钟前
算法学习笔记:8.Bellman-Ford 算法——从原理到实战,涵盖 LeetCode 与考研 408 例题
java·开发语言·后端·算法·最短路径问题
天天摸鱼的java工程师27 分钟前
使用 Spring Boot 整合高德地图实现路线规划功能
java·后端
东阳马生架构42 分钟前
订单初版—2.生单链路中的技术问题说明文档
java
咖啡啡不加糖1 小时前
暴力破解漏洞与命令执行漏洞
java·后端·web安全
风象南1 小时前
SpringBoot敏感配置项加密与解密实战
java·spring boot·后端
DKPT1 小时前
Java享元模式实现方式与应用场景分析
java·笔记·学习·设计模式·享元模式
Percep_gan1 小时前
idea的使用小技巧,个人向
java·ide·intellij-idea
缘来是庄1 小时前
设计模式之迭代器模式
java·设计模式·迭代器模式