Springboot 配置中心Spring Cloud Config

在分布式系统中,由于服务数量巨多,为了方便服务配置文件统一管理,所以需要分布式配置中心组件。

服务端

服务端作用简单理解就是从git上拉取相应配合。

新建项目

pom.xml


	4.0.0

	com.fymod
	springcloud-config-server
	0.0.1-SNAPSHOT
	jar

	springcloud-config-server
	springcloud-config-server

	
		org.springframework.boot
		spring-boot-starter-parent
		1.5.10.RELEASE
		 
	

	
		UTF-8
		UTF-8
		1.8
		Edgware.SR2
	

	
		
			org.springframework.cloud
			spring-cloud-config-server
		

		
			org.springframework.boot
			spring-boot-starter-test
			test
		
	

	
		
			
				org.springframework.cloud
				spring-cloud-dependencies
				${spring-cloud.version}
				pom
				import
			
		
	

	
		
			
				org.springframework.boot
				spring-boot-maven-plugin
			
		
	


配置文件

application.yml

spring:
  application:
    name: config-server
  cloud:
    config:
      server: 
        git: 
          uri: https://github.com/keith002/springcloud-eureka/
          search-paths: config
          username: 
          password: 
server:
  port: 8081

其中,uri是我github上对应项目的地址,search-paths是路径(就是文件夹位置),username和password是用户名和密码,公开的话可以不写。然后对于上面配置好的地址和文件,上传到github上,我上传的文件只有一行代码(config-dev.properties)

name=Keith

Java代码

给启动类添加一个注解即可:@EnableConfigServer

运行

Run As运行后,地址栏输入http://localhost:8770/config/dev

{
	"name": "config",
	"profiles": ["dev"],
	"label": null,
	"version": "910fd18a674a4b1eae042b1531cf243040824617",
	"state": null,
	"propertySources": [{
		"name": "https://github.com/keith002/springcloud-eureka/config/config-dev.properties",
		"source": {
			"name": "Keith"
		}
	}]
}
如果打印基本信息则表示启动正常。
http请求地址:/{application}/{profile}[/{label}]
资源文件:
/{application}-{profile}.yml
/{label}/{application}-{profile}.yml
/{application}-{profile}.properties
/{label}/{application}-{profile}.properties
示例:本例中资源文件是config-dev.properties,其中config就是application,dev就是profile,匹配资源文件的第三种,访问地址就是/config(application)/dev(profile)

客户端

客户端简单理解就是从服务端获取配置信息。

新建项目

pom.xml


	4.0.0
	com.csdn
	springboot-config
	0.0.1-SNAPSHOT
	jar
	
		org.springframework.boot
		spring-boot-starter-parent
		1.5.9.RELEASE
	

	
		UTF-8
		UTF-8
		1.8
	
	
	
		
			
				org.springframework.cloud
				spring-cloud-dependencies
				Dalston.SR5
				pom
				import
			
		
	
	
		
			org.springframework.boot
			spring-boot-starter-web
		
		
			org.springframework.boot
			spring-boot-starter-test
			test
		
		
			org.springframework.cloud
			spring-cloud-config-client
		
	
	
		
			
				org.springframework.boot
				spring-boot-maven-plugin
			
		
	

配置文件

客户端默认优先加载bootstrap.properties,即便自己写了其他配置文件,也会加载默认的bootstrap配置文件,不写的话会提示8888端口这种错误。本例配置文件直接使用bootstrap.properties

spring.application.name=config
spring.cloud.config.label=master
spring.cloud.config.profile=dev
spring.cloud.config.uri= http://localhost:8081/
server.port=8082

spring.cloud.config.label 指明远程仓库的分支
spring.cloud.config.profile
dev开发环境配置文件
test测试环境
pro正式环境
spring.cloud.config.uri= http://localhost:8770/ 指明配置服务中心的网址。

Java代码

新建测试类TestController.java

import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class TestController {

    @Value("${name}")
    String name;
	
    @RequestMapping(value = "/hi")
    public String hi(){
        return name;
    }
    
}

运行

Run As运行后,地址栏输入http://localhost:8771/hi ,如果打印出了github上配置文件对应value则成功

转载:https://www.kancloud.cn/fymod/springcloud/539175

你可能感兴趣的:(Java)