共计 2847 个字符,预计需要花费 8 分钟才能阅读完成。
我们将使用 Spring Cloud Config 包为我们的应用程序进行远程配置。
我们的程序可以将您的设置移动到外部,以便我们的应用程序可以轻松配置,甚至可以更改其设置。
这被广泛用于微服务中。可以在不同的容器中多次启动相同的服务或应用程序,并且有一个中心位置可以读取这些服务的设置。
为此,我们将创建一个配置服务器和一个读取该服务器配置的客户端。配置服务器在 GitHub 上使用 GIT 存储库,我们存储配置文件。
申请数据如下:
配置服务器
项目:config-server
港口:8888
Spring 名称:config-server
GIT 服务器:https://github.com/chuchip/servercloudconfig.git
配置客户端
项目:config-client
港口:8080
Spring 名称:config-client
1. 配置服务器
您只能在 Maven 项目中包含此依赖项。
Spring Starter 的名称是 Config Server:
服务器配置由单个类组成,详细信息如下:
如下所示,这里唯一要强调的是标签 @EnableConfigServer。
在 application.properties 文件中,它 应该是 参数:spring.cloud.config.server.git.uri:
在这种情况下,我们使用 GitHub 上托管的服务器 Git。我们还可以指定使用 GITlocally 存储库,如下所示:
Spring Cloud 支持的配置服务器是以下后端:
GIT
Vault
JDBC
这些其实可以混合使用,这取决于所选择的配置文件。
对于在示例中使用的 GIT 服务器,重要的是拥有一个文件,其中包含请求数据的客户端的名称。该文件具有后缀 .properties。
因此,如果我们想要一个名为 config-client 的客户端应用程序的设置,也就是说变量 spring.application.name 等于 config-client,我们必须有一个名为 config-client.properties. 的文件。该文件的内容将是:
请注意,可以使: 或者 =。
除非您希望我们的字符串包含这些引号,否则请勿使用引号来分隔文字。
要查看客户端的值,我们将发出一个 GET 请求,指定客户端名称和配置文件。
在这种情况下,如果您未指定任何配置 config-client 文件,我们会要求您提供客户端配置和配置 default 文件。
要查看配置文件的设置 production, 您可以调用 URL:HTTP:// localhost:8888 / config-client / production,它显示以下输出:
这表示文件内容 config-client-production.properties,然后显示文件内容 的 config-client.properties。
因此,如果所需的配置文件中存在变量,则将返回该值。否则,它默认情况下在配置文件中查找,返回指定的值(如果有的话)。
客户端设置
一旦我们的配置服务器工作,我们将创建客户端。
我们将此 dependency 项添加到 Maven 文件中:
使用 Spring Initializr 将添加 Config Client 依赖项。此外,要刷新热配置,请添加启动器执行器。
现在,我们将应用程序配置为指定侦听配置服务器的位置。首先,我们将通过 bootstrap.properties 更改文件 config.properties 的名称。因此,Spring Boot 知道要查找服务器配置。
在此文件中,我们添加了 spring.cloud.config.uri, 指定服务器配置 URL 的属性。
我们还建立了属性 management.endpoints.web.exposure.include 来 refresh 配置包执行程序,以便您可以访问 URL:http://localhost:8080/actuator/refresh 这将强制我们刷新配置。
请记住,该变量 spring.application.name 设置应用程序名称,并指示 GIT 存储库中寻找设置的文件的名称。
使用变量 spring.profiles.active,我们指出将使用哪个配置文件。如果我们不放任何注释行,使用的配置文件将是默认配置文件。
在此示例中,我使用了几种方法来读取配置。
1. 创建包含标签的组件 @ConfigurationProperties
在这个最简单的方法中,我们指出哪个是要读取的属性的根,然后定义 Spring 应该填充的变量。
在类中,configuration.java, 我们指定我们要配置以 limites 开头的变量。
因此,变量 dato1 将具有指定的值 limites.dato1.
如果 limites.dato1 的值不能传递给整数,我们的应用程序就会失败; 但是,如果您没有找到该值,只需在不给出任何错误的情况下填写它。
该组件将通过标签注入 @Autowired。
2. 使用注释创建变量 @Value
因此,这也会将读取服务器配置的值。最大的区别是该值将被固定,因为它将被分配用于运行应用程序并且永远不会刷新。
变量 valorFijo 将在行上分配值:valores.valor_fijo.
3. 使用 @Value 函数参数中的条目
同样,从服务器配置读取该值,其优点是可以刷新该值。
运作
在我们的示例中,公开 URL /limites,refrescado, 和 datos。
调用 limites 返回此输出:
如果我们更改文件 <u>config-client.properties</u> 并在我们的 GIT 存储库服务器中进行推送和提交这样的值,对此 URL 的连续调用将显示旧数据,因为客户端只读取该星形的配置,除非你强迫他刷新数据。
想象一下,我们更改 ’config-client.properties’ 文件,以便我们现在拥有以下值:
做相应的提交和推送:
当您使用 POST 类型请求调用 URL http:// localhost:8080 / actuator / refresh 时,Spring 会强制它们调用服务器配置并刷新值。
如图所示,此请求的输出返回刷新的变量。
现在,如果我们调用 http://localhost: 8080/limits,我们会看到这一点的价值 minResuados,并 maxResultados 已经改变。然而,无论是 valorFijo 或 valorFuncion 已经改变。
如果我们调用 URL http:// localhost:8080 / refrescado 并看到变量 valorFuncion 已更新,则调用将放在标签上,@Value 以便在那时读取变量。但是,变量 valorFijo 不会在程序开头时更改,其值保持不变。
本人创业团队产品 MadPecker,主要做 BUG 管理、测试管理、应用分发,有需要的朋友欢迎试用、体验!
本文为 MadPecker 团队产品经理译制,转载请标明出处