半小时搭建Spring Cloud Config(本地配置中心或git配置中心)

本文章是基于jdk1.8.0_144,spring boot 2.0.2.release和spring cloud Finchley.RC1

项目源码下载地址:https://download.csdn.net/download/hongtao_scau/10437906

一、基础准备

    spring cloud是依赖于spring boot,不熟悉Spring Boot的同学可以学习以下文章:两小时学会spring boot。

    spring cloud的版本学习参考:spring cloud的版本

Spring Cloud并没有熟悉的数字版本号,而是对应一个开发代号。

Cloud代号 Boot版本(train) Boot版本(tested) lifecycle
Angle 1.2.x incompatible with 1.3 EOL in July 2017
Brixton 1.3.x 1.4.x 2017-07卒
Camden 1.4.x 1.5.x -
Dalston 1.5.x not expected 2.x -
Edgware 1.5.x not expected 2.x -
Finchley 2.x not expected 1.5.x -

文章用到的 Finchley.RC1是当前的稳定全面的版本,开发者可以根据自己项目的需求选择对应的版本

二、项目创建(多模块项目)

使用Idea创建maven项目,不勾选Create from archetype,选择next,填写项目名称等配置

半小时搭建Spring Cloud Config(本地配置中心或git配置中心)_第1张图片

创建完成之后删除项目中的src文件夹。

三、创建spring cloud config server 服务端

1、创建cloudserver模块

    new Module :选择Spring Initalizr ,选择next,

半小时搭建Spring Cloud Config(本地配置中心或git配置中心)_第2张图片

填写项目信息,Group、Artifact和刚刚第二步的填写一样,type选择maven Project

半小时搭建Spring Cloud Config(本地配置中心或git配置中心)_第3张图片

选择next后。下图界面,界面选择config server,为我们自动导入spring cloud的依赖。

半小时搭建Spring Cloud Config(本地配置中心或git配置中心)_第4张图片

最后生成项目文件 ,等待maven加载完毕。

2、以下是我完成cloudserver 所有配置之后的项目结构,接下来会一一讲解

半小时搭建Spring Cloud Config(本地配置中心或git配置中心)_第5张图片

第一步,先看看我们的依赖pom文件



	4.0.0

	cn.hongtaofans
	cloudserver
	0.0.1-SNAPSHOT
	jar

	cloudserver
	Demo project for Spring Boot

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

	
		UTF-8
		UTF-8
		1.8
		Finchley.RC1
	

	
		
			org.springframework.cloud
			spring-cloud-config-server
		
		
			org.springframework.boot
			spring-boot-starter-actuator
		
		
			org.springframework.boot
			spring-boot-starter-test
			test
		
		
			org.springframework.cloud
			spring-cloud-starter-netflix-eureka-server
		
	

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

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

	
		
			spring-snapshots
			Spring Snapshots
			https://repo.spring.io/snapshot
			
				true
			
		
		
			spring-milestones
			Spring Milestones
			https://repo.spring.io/milestone
			
				false
			
		
	




引入spring cloud,版本号为Finchley.RC1,要是不配置健康管理可以不引入actuator模块,要是不需要eureka注册中心则不需要引入这个模块,根据自己的需求引入这两个模块。不清楚dependency和dependencyManagement的区别可以在网上查看区别。

2、创建配置文件application

application.yml内容如下:

spring:
  profiles:
    active: native

native 表示读取本地文件,即会读取application-native文件,也可以配置成git来读取git文件

native 文件如下所示

server:
  port: 8888
spring:
  cloud:
    config:
      server:
        native:
          search-locations: classpath:/properties/

配置配置中心服务端口8888,配置文件的地址为本地的properties目录下,这是让client服务发现配置文件的地址配置

git文件如下所示

server:
  port: 8888
spring:
  application:
    name: config-server
  cloud:
    config:
      server:
        git:
          uri: https://github.com/hongtaofans/properties.git
          username:123
          password:123
配置git的地址,配置内容可以参考: git配置中心

3、配置文件:

新建properties文件,在目录下建application-dev.properties、application-prod.properties、application-test.properties文件,分别表示开发环境,生产环境、测试环境的配置文件。

application-dev.properties内容如下,简单配置

url=192.168.35.46
server.port=8081

4、项目启动

CloudserverApplication内容如下:

@SpringBootApplication
@EnableConfigServer
public class CloudserverApplication {

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

@enableConfigserver是配置项目为config中心,由此,启动项目,项目在8888端口启动,可以访问

四、client读取config server 服务

1、新建boot 模块,选择Spring initializr,勾选依赖项如下图:

半小时搭建Spring Cloud Config(本地配置中心或git配置中心)_第6张图片

2、博主最后的boot目录结构如下

第一步,看看我们的依赖文件 
  


	4.0.0

	cn.hongtao
	boot
	0.0.1-SNAPSHOT
	jar

	boot
	Demo project for Spring Boot

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

	
		UTF-8
		UTF-8
		1.8
	

	
		
			org.springframework.cloud
			spring-cloud-starter-config
		
		
			org.springframework.boot
			spring-boot-starter-web
		

		
			org.springframework.boot
			spring-boot-starter-test
			test
		
		
			org.springframework.cloud
			spring-cloud-starter-netflix-eureka-server
		
	

	
		
			
				org.springframework.cloud
				spring-cloud-dependencies
				Finchley.RC1
				pom
				import
			
		
	

	
		
			
				org.springframework.boot
				spring-boot-maven-plugin
			
		
	
	
		
			spring-milestones
			Spring Milestones
			https://repo.spring.io/milestone
			
				false
			
		
	


注意了,这里的spring cloud版本要保持一致,repository也要配置

2、新建bootstrap.properties(这里不能是yml文件,我踩过的坑)这里,需要配置在bootstrap中才能生效,而不是在application配置文件中,bootstrap配置文件会比application更加早的加载。

# 指明配置服务中心的网址
spring.cloud.config.uri=http://127.0.0.1:8888
spring.application.name=application
spring.cloud.config.profile=dev
spring.cloud.config.label=master

配置中心网址uri、name、profile,读取的文件会是配置中心的uri+name-profile的路径,即http://127.0.0.1:8888/application-dev。label主要是针对git中心的配置路径:/{label}/{application}-{profile}.properties,这里不详讲。

3、BootApplication启动文件

@SpringBootApplication
@RestController
public class BootApplication {

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

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

}

通过@Value可以获取配置文件url的值

先启动cloudserver再启动boot项目

访问localhost:8081/hi 可以得到配合文件中的url,说明本地配置中心已经成功运行。

但是,我们可能不能局限于此,博主在文章的开端已经埋下伏笔,要把eureka注册中心也配置进来。

五、eureka配置

1、eureka的作用众所周知,一个注册中心的决策,对标dubbo。

新建eureka模块,选择如下,导入eureka配置

半小时搭建Spring Cloud Config(本地配置中心或git配置中心)_第7张图片

目录结构如下:

半小时搭建Spring Cloud Config(本地配置中心或git配置中心)_第8张图片

2、pom依赖,加入了eureka模块



	4.0.0

	cn.hongtao
	eurekaserver
	0.0.1-SNAPSHOT
	jar

	eurekaserver
	Demo project for Spring Boot

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

	
		UTF-8
		UTF-8
		1.8
		Finchley.RC1
	

	
		
			org.springframework.cloud
			spring-cloud-starter-netflix-eureka-server
		
		
			org.springframework.boot
			spring-boot-starter-web
		
		
			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
			
		
	

	
		
			spring-snapshots
			Spring Snapshots
			https://repo.spring.io/snapshot
			
				true
			
		
		
			spring-milestones
			Spring Milestones
			https://repo.spring.io/milestone
			
				false
			
		
	



3、配置文件和启动文件

application文件,端口8761,service-url是注册地址,也就是localhost:8761/eureka/

server.port=8761
eureka.instance.hostname=localhost
###eureka.client.registerWithEureka:false和fetchRegistry:false来表明自己是一个eureka server
eureka.client.register-with-eureka=false
eureka.client.fetch-registry=false
eureka.client.service-url.defaultZone=http://${eureka.instance.hostname}:${server.port}/eureka/

然后就是EurekaServerApplication,enableEurekaServer是配置她是一个eureka服务

@EnableEurekaServer
@SpringBootApplication
public class EurekaserverApplication {

	public static void main(String[] args) {
		SpringApplication.run(EurekaserverApplication.class, args);
	}
}
启动EurekaServerApplication,访问localhost:8761,如图发布成功,可是DSreplicas还没有内容。


半小时搭建Spring Cloud Config(本地配置中心或git配置中心)_第9张图片

4、改造cloudserver和boot项目(pom文件已经在之前引入依赖)

cloudserver:

application-native.yml加入eureka配置

server:
  port: 8888
spring:
  cloud:
    config:
      server:
        native:
          search-locations: classpath:/properties/
  application:
    name: config-server
eureka:
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka/

配置注册名为config-server,并写入注册中心的地址。

启动文件CloudseverApplication中加入注解,配置注册项目

@EnableEurekaClient

同样,在boot项目中,配置bootstrap文件

加入配置

eureka.client.service-url.defaultZone=http://localhost:8761/eureka/
spring.cloud.config.discovery.enabled=true
spring.cloud.config.discovery.service-id=config-server

service-id是发现的服务id为config-server,也是就是我们的上一步填写的cloudsever,这样一来,boot就可以使用cloudsever的服务。

在启动项中同样加上注解

@EnableEurekaClient
由此我们一次启动eurekaServer、cloudserver、boot项目,访问localhost:8761可以看到以下,config-server和application已经被注册

半小时搭建Spring Cloud Config(本地配置中心或git配置中心)_第10张图片

由此,我们完成了整个项目的配置,谢谢大家学习,希望有什么问题请多多指教。




你可能感兴趣的:(spring,cloud)