开发环境
基于:IntelliJ IDEA
、Maven构建工具
、JDK1.8
、SpringBoot 2.3.4
、Spring4.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/进入配置进行编辑发布就可以实现动态刷新。