如何使用Spring Config Server

这次,我们将使用Spring Cloud Config包为我们的应用程序进行远程配置。

我们的想法是,我们的程序可以将您的设置移动到外部位置,以便我们的应用程序可以轻松配置,甚至可以更改其设置。

这被广泛用于微服务中。可以在不同的容器中多次启动相同的服务或应用程序,并且有一个中心位置可以读取这些服务的设置,这很有趣。

为此,我们将创建一个配置服务器和一个读取该服务器配置的客户端。配置服务器在GitHub上使用GIT存储库,我们存储配置文件。

申请数据如下:

配置服务器

配置客户端

  • 项目:config-client
  • 港口:8080
  • Spring名称:config-client

程序源可以在这里找到。

  1. 配置服务器

您只能在Maven项目中包含此依赖项。

< 依赖>
     < groupId > org.springframework.cloud </ groupId >
     < artifactId > spring-cloud-config-server </ artifactId >
</ dependency >

 

Spring Starter的名称是Config Server:

图片标题

服务器配置由单个类组成,详细信息如下:

 com。profesorp。configserver ;
 
进口 组织。弹簧框架。开机。SpringApplication ;
进口 组织。弹簧框架。开机。自动配置。SpringBootApplication ;
进口 组织。弹簧框架。云。配置。服务器。EnableConfigServer ;
 
@EnableConfigServer
@SpringBootApplication
公共  ConfigServerApplication {
 
    public  static  void  main(String [] args){
        SpringApplication。运行(ConfigServerApplication。,ARGS);
    }
}

 

如下所示,这里唯一要强调的是标签  @EnableConfigServer

在application.properties文件中,它  应该是 参数:spring.cloud.config.server.git.uri:

春天。申请。name = config - server
服务器。port = 8888
 
春天。云。配置。服务器。git。URI = HTTPS://github.com/chuchip/servercloudconfig.git

 

在这种情况下,我们使用GitHub上托管的服务器Git。我们还可以指定使用GITlocally存储库,如下所示:

春天。云。配置。服务器。git。uri = file:// eclipe / spring-config /

 

Spring Cloud支持的配置服务器是以下后端:

  • GIT
  • 拱顶
  • JDBC

这些后端甚至可以混合使用,这取决于所选择的配置文件,它们将使用其中一个。但这超出了本文档的范围。

对于在示例中使用的GIT服务器,重要的是拥有一个文件,其中包含请求数据的客户端的名称。该文件将具有后缀  .properties

 因此,如果我们想要一个名为config-client的客户端应用程序的设置,也就是说变量spring.application.name 等于  config-client,我们必须有一个名为config-client.properties. 的文件。该文件的内容将是:

datosservidor。最小= 11
datosservidor。最大值= 20
限制。最小=  - 1
限制。最大值= 2
瓦洛雷斯。valor_fijo:VALORFIJO
瓦洛雷斯。valor_funcion:“VALORDEFUNCION” ;

 

请注意,可以使用 或  指定值 。 :=

除非您希望我们的文字(字符串)包含这些引号,否则请勿使用引号来分隔文字。

要查看我们的客户端值,我们将发出一个GET请求,指定客户端名称和配置文件。

图片标题在这种情况下,如果您未指定任何配置config-client文件,我们会询问客户端配置和配置default,文件。

要查看配置文件的设置,production, 您可以调用URL:HTTP:// localhost:8888 / config-client / production,它显示以下输出:

图片标题

这显示文件内容 config-client-production.properties,然后显示文件内容

的  config-client.properties

因此,如果所需的配置文件中存在变量,则将返回该值。否则,它默认查看配置文件  ,返回指定的值(如果有)。

客户端设置

一旦我们的配置服务器工作,我们将创建客户端。

我们将此依赖项添加到Maven文件中:

< 依赖>
   < groupId > org.springframework.cloud </ groupId >
   < artifactId > spring-cloud-starter-config </ artifactId >
</ dependency >

 

使用Spring Initializr会添加Config Client依赖项。此外,要刷新热配置,请添加启动器执行器。

现在,我们将应用程序配置为指定侦听配置服务器的位置。首先,我们将通过bootstrap.properties更改文件config.properties的名称。因此,Spring Boot知道要查找服务器配置。

在此文件中,我们添加spring.cloud.config.uri, 指定服务器配置的URL 的属性。

spring.application .name = config-client
spring.cloud.config .uri = http:// localhost:8888
#spring.profiles.active =生产
management.endpoints.web.exposure .include = refresh

 

我们还建立了属性management.endpoints.web.exposure.includerefresh配置包执行程序,以便您可以访问URL:  http://localhost:8080/actuator/refresh 这将强制我们刷新配置。

请记住,变量spring.application.name设置应用程序名称,并指示GIT存储库中寻找设置的文件的名称。

使用变量  spring.profiles.active,我们指出将使用哪个配置文件。如果我们不放任何(如此注释行的情况),使用的配置文件将是默认配置文件。

在这个例子中,我使用了几种方法来读取配置。

  1. 创建包含标签的组件   @ConfigurationProperties 

在这个最简单的方法中,我们指出哪个是要读取的属性的根,然后定义Spring应该填充的变量。

在类中,configuration.java, 我们指定我们要配置以limites开头的变量。

进口 组织。弹簧框架。开机。背景。属性。ConfigurationProperties ;
进口 组织。弹簧框架。刻板印象。组件 ;
进口 lombok。数据 ;
 
@数据
@零件
@ConfigurationProperties“limites”
公共  配置 {
    private  int  minimum ;
    private  int  maximum ;    
}

 

因此,变量dato1将具有指定的值limites.dato1.

如果你  limites.dato1的值不能传递给整数,我们的应用程序就会失败; 但是,如果您没有找到该值,只需在不给出任何错误的情况下填写它。

组件将通过标签注入  @Autowired。 

@Autowired
私有 配置 配置 ;

 

2.使用注释创建变量 @Value

因此,还将读取服务器配置的值。最大的区别是该值将被固定,因为它将被分配用于运行应用程序并且永远不会刷新。

@Value“$ {valores.valor_fijo}”
String  valorFijo ;

 

变量valorFijo将在行上分配值:valores.valor_fijo.

3.使用@Value 函数参数中的  条目

同样,从服务器配置中读取该值,其优点是可以刷新该值。

@GetMapping“/ refrescado”
public  BeanConfiguration  getConfiguracionRefrescada@Value“$ {valores.valor_funcion}”String  valorFuncion)
    {....}

 

运作

在我们的示例中,公开URL /limitesrefrescado,datos

调用  limites返回此输出:

图片标题

如果我们更改文件  config-client.properties并在我们的GIT存储库服务器中进行推送和  提交这样的值,对此URL的连续调用将显示旧数据,因为客户端只读取该星形的配置,除非你强迫他刷新数据。

想象一下,我们更改'config-client.properties'文件,以便我们现在拥有以下值:

datosservidor。最小= 10
datosservidor。最大值= 20
限制。最小=  - 101
限制。最大值= 201
瓦洛雷斯。valor_fijo:OTROVALORFIJO
瓦洛雷斯。valor_funcion:“OTROVALORDEFUNCION”

 

做相应的提交推送:

>  git  commit  - a  - m  “cambiada configuracion” ; git  push

 

当您使用POST类型请求调用URL http:// localhost:8080 / actuator / refresh时,  Spring会强制它们调用服务器配置并刷新值。

图片标题

如图所示,此请求的输出返回刷新的变量。

现在,如果我们调用的http://本地主机:8080 /限制,我们会看到这一点的价值  minResuados ,并  maxResultados  已经改变。然而,既没有  valorFijo 或  valorFuncion 已经改变。

如果我们调用URL http:// localhost:8080 / refrescado  并看到变量  valorFuncion 已更新,则调用将放在标签上,  @Value 以便在那时读取变量。但是,变量  valorFijo 不会在程序开头时更改,其值保持不变。

要考虑的一个重要概念是, 如果我们在配置文件中删除变量,则变量的值不会为空。相反,它保留了先前建立的价值。无论是@Value使用a  @ConfigurationProperties 还是a   读取变量都是如此  @Bean

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值