新建一个工程config-consumer,通过分布式配置中心获取和使用配置信息。
pom.xml文件关键配置:
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.7.RELEASE</version> <relativePath/> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-config</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-config-client</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> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>Finchley.RELEASE</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>
Controller类:
@RestController public class UserController { //此参数值来自于配置中心 @Value("${jdbc.username}") private String username; @GetMapping("/user/info") public String getUsername() { return username; } }
启动类:
@SpringBootApplication public class Main { public static void main(String[] args) { SpringApplication.run(Main.class, args); } }
application.properties文件的配置:
spring.application.name=config-consumer #此参数值从配置中心获取 server.port=${configcenter.port} #server.port=4321
bootstrap.properties文件的配置(单配置中心,直接通过URL地址获取配置):
bootstrap配置文件用来程序引导时执行,应用于更加早期配置信息读取,如可以用来配置application配置文件中使用到的参数等。
bootstrap配置文件优先于application配置文件加载。
在spring cloud config client中要用bootstrap配置文件来获取config server的配置信息。
#配置中心应用的URL地址 spring.cloud.config.uri=http://localhost:4001 #配置文件config-dev.properties的名称,对应 {name} 部分 spring.cloud.config.name=config #对应 {profile} 部分 spring.cloud.config.profile=dev eureka.instance.hostname=${spring.cloud.client.ip-address} eureka.instance.instance-id=${spring.cloud.client.ip-address}:${server.port} eureka.instance.prefer-ip-address=true eureka.client.service-url.defaultZone=http://root:123456@${eureka.instance.hostname}:7001/eureka/
高可用配置中心的bootstrap.properties文件配置:
将多个服务名相同的配置中心应用注册到注册中心即可提供配置中心的高可用。
#开启通过服务名来访问config-server spring.cloud.config.discovery.enabled=true #config-server的服务名 spring.cloud.config.discovery.service-id=config-center #配置文件config-dev.properties的名称,对应 {name} 部分 spring.cloud.config.name=config #对应 {profile} 部分 spring.cloud.config.profile=dev eureka.instance.hostname=${spring.cloud.client.ip-address} eureka.instance.instance-id=${spring.cloud.client.ip-address}:${server.port} eureka.instance.prefer-ip-address=true #注册中心 eureka.client.service-url.defaultZone=http://root:123456@${eureka.instance.hostname}:7001/eureka/
客户端启用配置刷新功能:
在需要获取最新配置信息的Bean类上添加 @RefreshScope 注解,开启refresh功能。以下是Controller类需要获取最新配置信息的用法:
@RestController @RefreshScope //开启配置中心的更新机制。接到SpringCloud配置中心配置刷新的时候,自动将新的配置更新到该类对应的字段中。 public class UserController { //此参数值来自于配置中心 @Value("${jdbc.username}") private String username; @GetMapping("/user/info") public String getUsername() { return username; } }
通过actuator/refresh节点端口来刷新带有@RefreshScope注解的bean类:
在pom.xml文件添加依赖:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency>
在application.properties文件添加以下配置,导出refresh端点:
#默认只开启health、info两个节点 #management.endpoints.web.exposure.include=* management.endpoints.web.exposure.include=health,info,refresh
以POST方式触发 http://localhost:4321/actuator/refresh 节点,即可刷新带有@RefreshScope注解的bean类。
相关推荐
Apollo配置中心是由携程开源的一款.config中心,通过Apollo客户端可以实时更新应用程序的配置信息。下面详细介绍了Maven的Springboot项目整合Apollo配置中心的配置和使用。 一、Apollo配置中心的安装和配置 首先...
6. 客户端配置信息监控–可以在界面上方便看到配置在被那些实例使用 7. 提供 Java 和 .NET 原生客户端,方便应用集成 8. 提供了 HTTP 接口,非 Java 和 .NET 应用也可以方便地使用 9. 提供开放 API 10. 部署非常简单...
* 动态配置:Nacos配置中心可以动态地更新应用程序的配置信息,无需重新启动应用程序。 * 版本控制:Nacos配置中心提供了配置的版本控制功能,方便地管理配置的历史记录。 * 多环境支持:Nacos配置中心支持多个环境...
- 在生产环境中,配置信息可能包含敏感数据,因此应考虑使用Spring Security保护Config Server,仅允许授权的客户端访问。 - 可以使用Spring Cloud Bus配合配置服务器,实现在多个实例间同步配置更改。 6. **故障...
配置中心是微服务架构中的关键组件,它主要负责集中管理各个微服务的配置信息,包括应用配置、环境配置、安全配置和业务配置等。在没有配置中心的传统项目中,配置通常以静态文件的形式存在,这种方式存在着分散、...
Config Server 作为一个中央存储库,负责管理所有微服务的配置,而 Config Client 是一个客户端库,安装在每个需要使用配置的服务上,用于连接配置服务器并获取配置信息。 **二、配置仓库** Spring Cloud Config ...
Etcd使用Raft一致性算法来确保数据的一致性和可靠性,非常适合用来存储和管理微服务的配置信息。 Spring Boot整合Etcd,主要通过Spring Cloud Config和Etcd集成库来实现。Spring Cloud Config是一个用于外部化配置...
配置文件是指存储应用程序配置信息的文件,例如数据库连接信息、服务器地址等。在Java类中,读取配置文件信息可以使用多种方法,其中一种方法是使用`this.getClass().getClassLoader().getResourceAsStream`方法。 ...
在本 demo 中,开发者可能设置了一个本地或远程的 Git 仓库来存储配置信息。 2. **SpringCloud Config Client**:客户端应用连接到 Config Server 获取配置。在 demo 中,你可能会看到如何在微服务应用中集成 ...
在这个“nacos配置中心初始化案例”中,我们将深入探讨如何使用Nacos作为配置中心来管理应用程序的配置。 一、Nacos配置中心简介 Nacos的核心功能之一就是配置管理,它允许开发者在不重启应用的情况下动态地更新...
上次任务中保存的某些配置信息可能无法恢复) #### 知识点概述 在安装AutoCAD 2008时遇到“无法加载配置文件。上次任务中保存的某些配置信息可能无法恢复”的问题较为常见,通常与系统环境、安装程序自身或第三方...
json 配置设计,系统表单控制,json配置信息设计。json 配置设计,系统表单控制,json配置信息设计。json 配置设计,系统表单控制,json配置信息设计。json 配置设计,系统表单控制,json配置信息设计。json 配置...
可以创建一个示例配置文件或默认配置文件,将敏感信息分离出来,以供团队成员使用。 7. **动态配置** 有些应用程序支持动态加载或更新配置,无需重启服务。这通常通过监听配置文件的变更事件或提供API接口来实现,...
nacos 配置中心 nacos 配置中心是一个基于云原生的配置管理系统,提供了统一的配置管理服务...通过以上步骤,我们就可以成功地将 nacos 配置中心集成到 SpringBoot 项目中,并使用配置中心来管理应用程序的配置信息。
2. Config Server:作为配置中心,它负责从配置仓库中获取并提供配置信息。 3. Config Client:每个微服务都是Config Client,启动时从Config Server获取配置信息,同时可以监听配置变化,实现实时刷新。 4. 配置...
VBS获取完整计算机配置信息,可添加域组策略,批量获取局域网计算机配置信息
在 ZXR10 2826E 交换机中,我们可以使用以下命令来保存配置信息: 1B(cfg)#saveconfig 在 ZXR10 3952 交换机中,基本配置流程和配置命令与 ZXR10 2826E 交换机类似,但有一些不同之处。例如,在配置 VLAN 时,我们...
批处理自动获取电脑配置信息,自动生成txt文件在C盘下。批处理自动获取电脑配置信息,自动生成txt文件在C盘下
1. 初始化信息与基本配置 初始化信息是在交换机启动后显示的信息,用于设置管理员账户密码等基本信息。浪潮思科光纤交换机在启动时会提示用户设置“admin”账户密码,需要输入两次以确认。此外,交换机还会通过基础...