spring cloud config 用svn做配置文件仓库

spring cloud config 用svn做配置文件仓库

spring cloud的配置文件中心分为服务端和客户端,下面是一个基于svn实现配置中心的例子:

一:服务端主要配置

1,创建一个spring boot项目,修改pom.xml,添加jar包依赖,代码如下:

<?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.qwrt.fire.config.server</groupId>
	<artifactId>fire-config-server</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<packaging>jar</packaging>

	<name>fire-config-server</name>
	<description>Demo project for Spring Boot</description>

	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>1.5.6.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>
	</properties>

	<dependencies>
		<!--引入web包-->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>

		<!--引入配置中心的包-->
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-config-server</artifactId>
			<version>1.3.2.RELEASE</version>
		</dependency>

		<!--使用svn做配置文件的版本管理,需要多引入svnkitr包-->
		<dependency>
			<groupId>org.tmatesoft.svnkit</groupId>
			<artifactId>svnkit</artifactId>
			<version>1.9.0</version>
		</dependency>



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

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


</project>


2,启动类添加注解

给启动类添加注解,代码如下:

package com.qwrt.fire.config.server;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.config.server.EnableConfigServer;

@SpringBootApplication
@EnableConfigServer
public class FireConfigServerApplication {

	public static void main(String[] args) {
		SpringApplication.run(FireConfigServerApplication.class, args);
	}
}


3,配置文件

修改application.yml,进行配置svn,代码如下:

server:
  port: 9091  #应用程序端口
spring:
  application:
    name: fire-config-server  #应用程序名
  cloud:
    config:
      server:
        svn:
          uri: xxxxx #svn地址
          username: xxxxx #svn用户名
          password: xxxxx #svn密码
        default-label: config-repo   #trunk,配置文件的目录
  profiles:
    active: subversion  #表示这是采用的svn进行的spring cloud的配置




    上面的uri是svn的一个路径,在svn的目录下创建一个文件夹,存放配置文件。


4,测试

启动spring boot的配置中心,输入http://localhost:9091/application/profile/label,进行访问


二:客户端

1,修改客户端的pom.xml

添加下面两个依赖:

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

<!--spring cloud配置中心-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-config</artifactId>
        </dependency>


2,配置文件

需要配置两个配置文件,application.yml和bootstrap.yml。其中application.yml是客户端的个性化配置文件,bootstrap.yml是连接配置中心的配置,bootstrap.yml文件会在application.yml之前进行加载。

bootstrap.yml代码如下:

spring:
  cloud:
    config:
      name: fire-sensor  #对应{application}部分
      profile: dev  #对应{profile}部分
      uri: http://localhost:9091/  #配置中心的具体地址
      label: config-repo  #对应版本的分支。如果配置中心使用的是本地存储,则该参数无用

3,测试

可以写一个controller进行测试,此处略。。。。



        总结:上面是spring cloud基于svn的配置中心实现的一个简单的步骤,不太重要的地方就省略了,如果觉得太简单抽象了,下面推荐一些参考的博客,有详细的实现说明,可以进行参考,还有对配置文件更新不需要重启项目加载配置文件的方法:

http://www.cnblogs.com/ityouknow/p/6906917.html
http://www.jianshu.com/p/167afb5447d4
http://blog.csdn.net/chenhuaping007/article/details/55253903
http://www.ityouknow.com/springcloud/2017/05/22/springcloud-config-git.html


        当然也可以使用git作为配置文件仓库的管理,和svn实现的步骤差不多,具体的也可以参考上面的博客,网上还有很多资料,这里就不费力气再写一篇关于git作为spring cloud配置中心的使用步骤了。

        我在参考上面的博客的时候遇到一些问题:

        1,默认是到svn的trunk或者branch目录下查找配置文件的,但是我的配置文件不是放在这两个目录下,所以需要配置的svn的uri路径需要指定到存放spring cloud配置文件的上级目录

         2,在配置svn的“default-label: xxx”属性的时候,网上的资料时说配置trunk或者branch,其实是配置的存放spring cloud配置文件的目录名。

         3,没有深刻理解理解spring cloud访问配置文件的http请求的路径含义,正确的是这样的http://localhost:9091/fire-sensor/dev/config-repo,解释:http://ip:端口/application/profile/label

     application就是配置文件的名称,profile标志是开发版,测试版,还是生产版,label表示的是存放配置文件的文件夹名。比如:

仓库中的配置文件会被转换成web接口,访问可以参照以下的规则:
/{application}/{profile}[/{label}]
/{application}-{profile}.yml
/{label}/{application}-{profile}.yml
/{application}-{profile}.properties
/{label}/{application}-{profile}.properties

         



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值