`
raymond.chen
  • 浏览: 1443741 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

使用配置中心的配置信息

 
阅读更多

新建一个工程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配置中心的配置和使用

    Apollo配置中心是由携程开源的一款.config中心,通过Apollo客户端可以实时更新应用程序的配置信息。下面详细介绍了Maven的Springboot项目整合Apollo配置中心的配置和使用。 一、Apollo配置中心的安装和配置 首先...

    nacos配置中心配置.docx

    * 动态配置:Nacos配置中心可以动态地更新应用程序的配置信息,无需重新启动应用程序。 * 版本控制:Nacos配置中心提供了配置的版本控制功能,方便地管理配置的历史记录。 * 多环境支持:Nacos配置中心支持多个环境...

    Spring Cloud Config(本地配置中心或git配置中心)

    - 在生产环境中,配置信息可能包含敏感数据,因此应考虑使用Spring Security保护Config Server,仅允许授权的客户端访问。 - 可以使用Spring Cloud Bus配合配置服务器,实现在多个实例间同步配置更改。 6. **故障...

    Apollo配置中心客户端使用案例源码

    首先,Apollo客户端是Apollo配置中心的核心组成部分,主要负责与配置中心服务器进行通信,获取并缓存配置信息。客户端提供了一套API,允许开发者在应用中动态获取或监听配置的变化。 1. **初始化Apollo客户端** ...

    微服务架构之配置中心.pdf

    配置中心是微服务架构中的关键组件,它主要负责集中管理各个微服务的配置信息,包括应用配置、环境配置、安全配置和业务配置等。在没有配置中心的传统项目中,配置通常以静态文件的形式存在,这种方式存在着分散、...

    配套示例代码:在windows 平台下之.NET6 使用Apollo配置中心

    Apollo配置中心是阿里巴巴开源的一款分布式配置管理框架,它在企业级微服务架构中扮演着重要角色,用于集中管理和推送应用的配置。本示例代码专为在Windows平台下使用.NET6框架的开发者提供,帮助他们理解和集成...

    Apollo 配置中心未授权获取配置漏洞利用-Apollo_unauth.zip

    然而,"Apollo 配置中心未授权获取配置漏洞利用"指出,Apollo在某些情况下可能存在安全漏洞,允许未经授权的用户访问和获取配置信息,这对系统的安全性构成威胁。 该漏洞可能源于Apollo在权限控制上的不足,例如,...

    这是一个适用于携程Apollo统一配置中心的Apollo客户端,基于C++实现-Apollo-Client.zip

    1. **配置中心**:Apollo作为配置中心,存储了所有应用的配置信息,支持多环境、多集群的配置管理,使得配置的更新和分发变得简单。 2. **实时推送**:当配置发生变更时,Apollo服务端会将更新推送到各个客户端,...

    springboot整合etcd配置中心-etcd-config-spring-boot.zip

    Etcd使用Raft一致性算法来确保数据的一致性和可靠性,非常适合用来存储和管理微服务的配置信息。 Spring Boot整合Etcd,主要通过Spring Cloud Config和Etcd集成库来实现。Spring Cloud Config是一个用于外部化配置...

    java类读取配置文件信息

    配置文件是指存储应用程序配置信息的文件,例如数据库连接信息、服务器地址等。在Java类中,读取配置文件信息可以使用多种方法,其中一种方法是使用`this.getClass().getClassLoader().getResourceAsStream`方法。 ...

    基于golang+viper+agollo实现本地文件配置和远程apollo配置中心多实例快速接入.zip

    配置管理涉及到如何存储、更新以及分发应用的配置信息,确保在不同环境和实例间的一致性和灵活性。本项目"基于golang+viper+agollo实现本地文件配置和远程apollo配置中心多实例快速接入"就是为了解决这一问题,提供...

    springcloud config配置中心

    2. **Config Client**:这是部署在每个微服务上的组件,它连接到Config Server并获取其配置信息。 **二、工作流程** 1. **配置存储**:所有的配置文件都存储在一个集中式版本控制系统(如Git)中,每个环境有自己...

    springcloud配置中心个人demo

    在本 demo 中,开发者可能设置了一个本地或远程的 Git 仓库来存储配置信息。 2. **SpringCloud Config Client**:客户端应用连接到 Config Server 获取配置。在 demo 中,你可能会看到如何在微服务应用中集成 ...

    nacos配置中心初始化案例

    在这个“nacos配置中心初始化案例”中,我们将深入探讨如何使用Nacos作为配置中心来管理应用程序的配置。 一、Nacos配置中心简介 Nacos的核心功能之一就是配置管理,它允许开发者在不重启应用的情况下动态地更新...

    使用docker-compose搭建高可用Apollo配置中心

    本文将详细讲解如何利用Docker Compose搭建一个高可用的Apollo配置中心,该中心包括Eureka服务发现、Spring Boot应用、Spring Cloud组件以及Apollo自身的各个服务组件。 Apollo是携程开源的一款分布式配置中心,它...

    cad2008安装(无法加载配置文件。上次任务中保存的某些配置信息可能无法恢复)

    上次任务中保存的某些配置信息可能无法恢复) #### 知识点概述 在安装AutoCAD 2008时遇到“无法加载配置文件。上次任务中保存的某些配置信息可能无法恢复”的问题较为常见,通常与系统环境、安装程序自身或第三方...

    C#获取和修改配置文件信息

    本文将深入探讨如何在C#中获取和修改配置文件信息,特别是appSettings部分,这是.NET应用程序最常用的配置存储区域。 配置文件通常以XML格式存在,其基本结构包括`&lt;configuration&gt;`、`&lt;appSettings&gt;`等节点。`...

    json 配置设计,系统表单控制,json配置信息设计。

    json 配置设计,系统表单控制,json配置信息设计。json 配置设计,系统表单控制,json配置信息设计。json 配置设计,系统表单控制,json配置信息设计。json 配置设计,系统表单控制,json配置信息设计。json 配置...

    apollo-0.9.1.zip(阿波罗配置中心源码)

    2. **apollo-configservice**:配置服务,存储和管理配置信息,与数据库交互,为adminservice提供数据支持。 3. **apollo-portal**:控制台服务,提供Web界面,供管理员操作和管理配置。 4. **apollo-common**:...

Global site tag (gtag.js) - Google Analytics