IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> 【Spring Cloud Alibaba】nacos配置中心实践 -> 正文阅读

[Java知识库]【Spring Cloud Alibaba】nacos配置中心实践

一、项目搭建

nacos注册中心实践,已经安装好了nacos,并且并且成功的将项目注册到了nacos中。接下来在实践下nacos做配置中心,首先来构建项目。

1、POM文件导入依赖

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>spring-cloud-nacos</artifactId>
        <groupId>com.lwb</groupId>
        <version>1.0.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>nacos-config</artifactId>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
    </properties>

    <dependencies>
        <!--nacos注册中心配置-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
        <!--nacos配置中心配置-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
    </dependencies>
</project>

2、主启动类

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

/**
 * @author 隐市高手
 * @date 2022/5/11 6:44
 */
@SpringBootApplication
@EnableDiscoveryClient
public class ApplicationNacosConfig {
    public static void main(String[] args) {
        SpringApplication.run(ApplicationNacosConfig.class, args);
    }
}

3、controller书写

import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * @author 隐市高手
 * @date 2022/5/11 6:51
 */
@RestController
@RefreshScope
public class UserInfoController {

    @Value("${system.username}")
    private String username;

    @GetMapping("/get/username")
    public String getUsername() {
        return username;
    }
}

注意这里的@RefreshScope是动态刷新的注解。意思是当nacos配置中心的配置内容发生变化后,controller对配置中心变量的引用可以立即生效,而不需要重启服务。比如@Value("${system.username}")对system.username的引用,当配置中心修改了这个值会立即改变程序中的值。

4、配置文件

1、bootstrap.yml

spring:
  application:
    name: nacos-config
  cloud:
    nacos:
      discovery:
        server-addr: 192.168.101.41:8848  #nacos作为注册中心地址
      config:
        server-addr: 192.168.101.41:8848 #nacos作为配置中心地址
        file-extension: yaml # 指定yaml的格式的配置

2、application.yml

spring:
  profiles:
    active: dev

server:
  port: 8809

为什么需要bootstrap.yml来写配置中心的信息。因为bootstrap.yml的优先级高于application.yml,程序在启动的时候,需要先知道nacos的服务端的基础信息,此时还没有到加载application.yml的时候。相当于初始引导,所以一定要有这个配置文件来配置nacos的基础信息。
现在我们将bootstrop.yml中的配置移动到application.yml中,启动看看会发生什么情况
在这里插入图片描述
可以看到,成序刚启动直接就报http://localhost:8848连接超时了。这是因为在bootstrop.yml中没有找到nacos服务端配置信息,默认使用localhost:8848导致的。

另一个需要注意的是这个配置:

spring:
  profiles:
    active: dev

知道springboot的都知道,这是表示dev模块的配置文件生效。然而我们从定义的配置文件来看,并没有定义dev模块。
实际上,因为我们使用的是nacos作为配置中心,因此这个dev不单单是指本地dev模块,会到nacos服务端去中dev服务模块。具体的查找规则是${spring.application.name}-${spring.profile.active}.${spring.cloud.nacos.config.file-extension}
spring.application.name定义的服务名

spring:
  application:
    name: nacos-config

spring.profile.active定义的生效模块

spring:
  profiles:
    active: dev

spring.cloud.nacos.config.file-extension配置文件类型后缀,就是nacos添加配置的时候选择的类型
在这里插入图片描述
实际上就是我们nacos中配置的Data ID
在这里插入图片描述

因此在本实例中,得到的结果就是nacos-config-dev.yaml。下面我们看看nacos配置服务端到底是怎么配置的。

二、配置定义

在上面描述中,本实例向nacos服务端添加了两个配置文件
在这里插入图片描述
当在开发环境的时候,可以选择dev配置文件。当在测试环境的时候,可以切换到test配置文件,仅仅需要指定下spring.profile.active即可
nacos-config-dev.yaml配置内容为:

system:
  username: laiwenbo-dev

nacos-config-test.yaml配置内容为:

system:
  username: 隐市高手-test

首先我们按照spring.profile.active=dev启动项目,访问controller中的/get/username接口
在这里插入图片描述
修改spring.profile.active=test启动项目后访问
在这里插入图片描述

三、group分组方案

在nacos中配置中心,还可以根据分组来定位到底使用哪一个文件
在这里插入图片描述
比如定义了两个Data Idnacos-config-test.yaml的配置文件,但是由于他们的group不同,所以我们只需要在bootstrap.yaml中指定对应的group即可
在这里插入图片描述

四、nacos空间命名方案

在nacos的命名空间新建,会自动生成一个命名空间ID,将ID写到配置文件中即可。别的配置同上面的逻辑一直。
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-05-13 11:38:35  更:2022-05-13 11:38:45 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 22:12:32-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码