spring cloud config使用与配置

本文介绍了Spring Cloud Config的使用,包括Server端和Client端的配置。Server端配置涉及Git和JDBC两种方式,Client端配置重点在于bootstrap.properties。通过Spring Cloud Config,应用可以从远程服务获取配置,实现配置的集中管理和动态更新。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

spring cloud config作为spring cloud全家桶中的一员,使用率并不高,但是在一定场景下还是很好用的。废话不多说,多说无益,我也不会。

spring cloud config需要两端,一个是保存配置的服务简称server端,一个是消费配置的服务简称client端。

首先我们从server端开始配置 ;

  1. server配置  

首先创建一个spring cloud项目,我已经创建好了,名字叫spring_cloud_config_server

mvn配置如下:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>

	<groupId>com.syb.cloud.config</groupId>
	<artifactId>spring_cloud_config_server</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<packaging>jar</packaging>

	<name>spring_cloud_config_server</name>
	<description>spring cloud config server</description>

	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.0.2.RELEASE</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
		<java.version>1.8</java.version>
		<spring-cloud.version>Finchley.BUILD-SNAPSHOT</spring-cloud.version>
	</properties>

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

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>

		<!--jdbc资源库配置-->
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-jdbc</artifactId>
		</dependency>

	</dependencies>

	<dependencyManagement>
		<dependencies>
			<dependency>
				<groupId>org.springframework.cloud</groupId>
				<artifactId>spring-cloud-dependencies</artifactId>
				<version>${spring-cloud.version}</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>
		</dependencies>
	</dependencyManagement>

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>

</project>

注意spring cloud与spring boot版本的对应,不然会出现未知错误或则连编译都过不去,具体对应请自行百度。

下面进行代码相关的配置:

首先是启动类;

启动类上需要添加@EnableConfigServer注解,标识该项目为config server端,至于其他地方与原先保持一致。

接下来是配置文件:

我的配值文件分两种,主要是根据配置数据来源的不同选用不同配置文件;

首先的是使用git的方法:

先给看配置文件

至于说为什么用户名和密码为*号的,我就不用说了,就是不想让你看而已,就这么简单

在git仓库添加配置文件

配置文件中的内容

之后这个server端就算配置完成了。

config让人很舒服的地方就是不仅可以使用git,还可以svn等版本控制工具,当然了还有jdbc,也就是数据库;当然了本地的文本文件也可以。

接下来使用jdbc配置:

上面maven配置中的jdbc配置就是为这个准备,如果不使用数据库的话,可以将这个依赖删除;

上配置:

 

这个配置大致与git配置相同,只是这个少了git的配置,变为了数据库的配置;

上面spring.cloud.config.server.jdbc=true这个配置是必须的,不然启动会报错找不到git地址;

自定义sql的spring.cloud.config.server.jdbc.sql的配置,我写的sql其实就是config默认配置,所以你懂了,你的数据库要有这几个字段,当然你可以自定义一个查询的sql,这个完全取决于你自己。

上数据库:

 

这时就看出来上面spring.cloud.config.label这个配置的用途了吧,就是一个查询字段,其他的没什么用,你也完全不可以, 但是你需要修改自定义sql。

这时启动项目,选用jdbc配置,那么你的配置数据就从数据库中读取了。

   

     2.接下来就是client端的配置

首先创建springboot的项目,上maven

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>

	<groupId>com.syb.cloud.config</groupId>
	<artifactId>spring_cloud_config_client</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<packaging>jar</packaging>

	<name>spring_cloud_config_client</name>
	<description>spring cloud config client demo</description>

	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.0.2.RELEASE</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
		<java.version>1.8</java.version>
		<spring-cloud.version>Finchley.BUILD-SNAPSHOT</spring-cloud.version>
	</properties>

	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-config</artifactId>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>


	</dependencies>

	<dependencyManagement>
		<dependencies>
			<dependency>
				<groupId>org.springframework.cloud</groupId>
				<artifactId>spring-cloud-dependencies</artifactId>
				<version>${spring-cloud.version}</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>
		</dependencies>
	</dependencyManagement>

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>

	<repositories>
		<repository>
			<id>spring-snapshots</id>
			<name>Spring Snapshots</name>
			<url>https://repo.spring.io/snapshot</url>
			<snapshots>
				<enabled>true</enabled>
			</snapshots>
		</repository>
		<repository>
			<id>spring-milestones</id>
			<name>Spring Milestones</name>
			<url>https://repo.spring.io/milestone</url>
			<snapshots>
				<enabled>false</enabled>
			</snapshots>
		</repository>
	</repositories>


</project>

 

核心依赖就是spring-cloud-starter-config。

接下来就是主要的配置文件了:

注意:springclient中的配置文件需要使用bootstrap.properties,我在之前测试的时候也使用了application.properties也能启动,后来不知为何不能使用了。可能与我选用配置文件有关,具体原因不详。正常的springboot的配置文件加载顺序也是bootstrap.properties优先于application.properties的。

上配置文件:

 

上面关于从server端的获取的配置的主配置就不用详解了,我感觉注释就已经说的很明白了,主要说一下快速失败的配置;

快速失败的意思就是如果没有成功获取配置则项目就会启动报错,使用依情况而定吧。

 

这个快速失败的注释还是很清楚的,需要说明的就是回退相关的参数:

初始回退时间,意思就是首次尝试再连接与第一次连接的间隔时间;

最大回退时间,意思是两次连接的最大间隔时间;

回退指数乘数,比如第一次回退是100,那么第二次回退就是120,之后就是120*1.2,就是这么一个意思,最大不会超过最大回退时间。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值