穿越Java - SpringCloud篇 第二章 服务注册与发现 - NACOS | 第3节NACOS实现配置中心

开发环境

基于:IntelliJ IDEAMaven构建工具JDK1.8SpringBoot 2.3.4Spring4.3.28编写。

官人如需使用 IDEA 请阅读教程:IntelliJ IDEA
官人如需使用 Maven 请阅读教程:Maven 构建工具的下载与安装

更多干货

请参考:《穿越 Java 之 语法基础篇》 系列文章
请参考:《穿越 Java 之 Web基础篇 》系列文章
请参考:《穿越 Java 之 开发必备框架篇 》 系列文章
请阅读:《穿越 Java 之 SpringBoot框架篇》系列文章
请阅读:《穿越 Java 之 SpringCloud微服务架构篇》 系列文章

需求

  • 能够将配置文件保存在一个公共的地方 ,修改时能达到动态刷新的效果 .
    在这里插入图片描述

分析

  • 单体项目的化是将其放在单独的配置文件中即可。

微服务项目中应该如何做呢?

  • 这就用到了配置中心(Nacos),他和服务与注册的实现类似。当然springcloudconfig也可以做。
  • 首先要有一个配置中心 然后要 告诉各个项目去 (Nacos)配置中心去获取文件
  • 然后为项目中整合Nacos配置中心的客户端。

示例

配置中心

  • 在Nacos配置中心上新建一个yaml配置文件
    在这里插入图片描述

pom.xml依赖

  • 整合nacos config–>spring-cloud-starter-alibaba-nacos-config
<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.3.4.RELEASE</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>
	<groupId>com.example</groupId>
	<artifactId>user-service</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<name>user-service</name>
	<description>Demo project for Spring Boot</description>
	<properties>
		<java.version>1.8</java.version>
	</properties>
	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
		<dependency>
			<groupId>org.projectlombok</groupId>
			<artifactId>lombok</artifactId>
			<optional>true</optional>
		</dependency>
		<!--为项目 整合openfeign-->
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-openfeign</artifactId>
		</dependency>
		<!--为项目整合nacos config-->
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
		</dependency>
	</dependencies>
<!--为项目整合spring cloud-->
	<dependencyManagement>
		<dependencies>
			<dependency>
				<groupId>org.springframework.cloud</groupId>
				<artifactId>spring-cloud-dependencies</artifactId>
				<version>Greenwich.SR3</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>
			<!--为项目整合spring cloud alibaba-->
			<dependency>
				<groupId>org.springframework.cloud</groupId>
				<artifactId>spring-cloud-alibaba-dependencies</artifactId>
				<version>0.9.0.RELEASE</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>
			<!--为项目整合spring cloud netflix-->
			<dependency>
				<groupId>org.springframework.cloud</groupId>
				<artifactId>spring-cloud-netflix-dependencies</artifactId>
				<version>2.1.3.RELEASE</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>
		</dependencies>
	</dependencyManagement>

bootstrap.yaml配置文件

#告诉当前项目 nacos配置中心服务端在哪里
spring:
  cloud:
    nacos:
      config:
        #本地的nacos-service
        server-addr: localhost:8848
        file-extension: yaml
  application: user-service
  profiles:
    active: dev

编写

  • @RefreshScope–>进行动态刷新
package com.example.userservice.controller;

@RestController
@Slf4j
@RequestMapping("/user")
@RefreshScope
public class HelloController {
    
    
    @GetMapping("/hello")
    public String hello(){
    
    
        return "Hello Spring Cloud";
    }
    @Autowired
    private OrderServiceFeignClient orderServiceFeignClient;
    @GetMapping("/testFeign")
    public  String testFeign(){
    
    
        return orderServiceFeignClient.query();
    }
    //想要获取到Nacos config 服务上的yaml文件的内容 实现动态更新。
    @Value("${person.username}")
    private String personUsername;
    
    @RequestMapping("/nacosConfig")
    public String nacosConfig(){
    
    
        return  this.personUsername;
    }
}

测试

  • 访问http://localhost/nacos/进入配置进行编辑发布就可以实现动态刷新。
    在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_47371330/article/details/109333404