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

相关推荐
_院长大人_32 分钟前
设计模式-工厂模式
java·开发语言·设计模式
凌波粒1 小时前
MyBatis完整教程IDEA版(2)--ResultMap/注解/一对多/多对一/lombok/log4j
java·intellij-idea·mybatis
蓝-萧1 小时前
【玩转全栈】----Django基本配置和介绍
java·后端
priority_key1 小时前
排序算法:堆排序、快速排序、归并排序
java·后端·算法·排序算法·归并排序·堆排序·快速排序
韩立学长1 小时前
基于Springboot的旧时月历史论坛4099k6s9(程序、源码、数据库、调试部署方案及开发环境)系统界面展示及获取方式置于文档末尾,可供参考。
数据库·spring boot·后端
Q_Q5110082851 小时前
python+django/flask的在线学习系统的设计与实现 积分兑换礼物
spring boot·python·django·flask·node.js·php
Q_Q5110082852 小时前
python+django/flask的车辆尾气检测排放系统-可视化大屏展示
spring boot·python·django·flask·node.js·php
汤姆yu2 小时前
基于SpringBoot的动漫周边商场系统的设计与开发
java·spring boot·后端
皮皮林5513 小时前
快速解决 Maven 版本冲突指南 !
java·maven
灰小猿3 小时前
Spring前后端分离项目时间格式转换问题全局配置解决
java·前端·后端·spring·spring cloud