文章参考来源: lzhou666的 http://www.cnblogs.com/skyblog/p/5129603.html
要使用spring cloud分布式配置文件总体上分为3个大的步骤:
1.首选你需要创建存放配置文件的git仓库。
2.创建一个配置文件服务器,该服务器将配置文件信息转化为rest接口数据对外提供。
3.创建一个demo应用项目,该项目演示使用配置文件服务器。
具体步骤:
1)创建配置文件存放仓库
Spring cloud使用git或svn存放配置文件,默认情况下使用git,因此你需要安装git私服或者直接使用互联网上的github或者git.oschina,这里推荐使用git.oschina。本文示例使用的是git.oschina,创建好git工程后,在此工程再创建两个文件夹test和prop来存放配置文件。然后创建两个配置文件。如下:
说明: 这两个文件夹分别存放测试和正式环境的配置信息,供demo项目使用。
2)创建配置文件服务器
配置文件仓库创建好了后,就需要创建配置管理服务器,该服务器只是将配置文件转换为rest接口对外提供服务,不做其它用途。这个服务器的功能也是spring cloud提供的,所以我们只需要引入相关jar包,稍微设置一下即可。
1.创建该服务应用,你需要首选创建一个空的maven工程:
2.修改pom文件的引用,添加springCloud的继承引用和config Server服务包的引用。
<!-- 1.引入springCloud starter parent包的继承-->
<parent>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-parent</artifactId>
<version>Brixton.RELEASE</version>
<relativePath />
</parent>
<groupId>com.vx.springCloud</groupId>
<artifactId>configServer</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<name>configServer</name>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<!-- 2. 引入configserver服务包-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</dependency>
</dependencies>
3.在项目application.yml中添加配置服务器的链接信息
server:
#config配置服务一般设置端口8888
port: 8888
spring:
application:
name: configServer
cloud:
#git服务配置信息
config:
server:
git:
uri: https://git.oschina.net/aofavx/conf.git
#从以下文件夹下下面查找配置文件
search-paths: dev*,test*
其中server.port是配置当前web应用绑定8888端口,git.uri指定配置文件所在的git工程路径,searchPaths表示将搜索这些文件夹下的配置文件。
4.修改App.java文件,设置启动类和congfigServer注解。
/**
* 系统配置服务器服务项目
*/
@SpringBootApplication
//设置当前项目为配置文件服务器
@EnableConfigServer
public class App
{
public static void main( String[] args ){
SpringApplication.run(App.class,args);
}
}
5. 启动服务成功,其他项目就可以通过配置服务器拿到配置信息了。
3)创建Demo项目使用配置服务
1.创建Demo项目,同样先创建一个普通的maven工程:
2.引入springcloud config的clientjar包
<!-- 1.引入springCloud parent包的继承-->
<parent>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-parent</artifactId>
<version>Brixton.RELEASE</version>
<relativePath />
</parent>
<dependencies>
<!-- 2. 引入configserver服务包-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-client</artifactId>
</dependency>
</dependencies>
3.设置指向配置服务器的config信息
server:
port: 8080
spring:
application:
name: configDemo
profiles:
#选择使用下面哪个配置项
active: service1
#服务配置信息
cloud:
config:
#此处的config.profile会根据生效的active设置对应的值
profile: ${config.profile}
name: helloword
uri: http://localhost:8888
#将不同的配置组以---分割,并通过spring.profiles定义每组的名字,方便后续引用
---
spring:
profiles: service1
config:
profile: test
---
spring:
profiles: service2
config:
profile: dev
说明:获取git上的资源信息遵循如下规则:
/{application}/{profile}[/{label}]
/{application}-{profile}.yml
/{label}/{application}-{profile}.yml
/{application}-{profile}.properties
/{label}/{application}-{profile}.properties
application:表示应用名称,在配置文件中通过spring.config.name配置,如果不配置这使用spring.application.name值
profile:表示获取指定环境下配置,例如开发环境、测试环境、生产环境 默认值default,实际开发中可以是 dev、test、demo、production等
label: git标签,默认值master
4.注入需要使用的配置项
@RestController
@SpringBootApplication
public class App
{
//冒号后面代表:如果没设置参数,就取冒号后面的值作为默认值
@Value("${message: Hello Word}")
String msg;
@ResponseBody
@RequestMapping(value = "/")
String home() {
return "获取的参数值:"+msg;
}
public static void main( String[] args ){
SpringApplication.run(App.class,args);
}
}
5.启动项目
此时启动项目时,demo项目发送获取配置信息的请求给configServer服务。
configServer服务会从git上根据请求的资源文件规则下载对应文件,存储到本地缓存,并将配置信息返回给Demo项目。
6.测试
在浏览器中输入:http://localhost:8080/ 回车。
说明配置服务器和Demo中配置的引用都OK。
修改Demo项目端口为8081,通过maven打成Jar。运行jar命令:
java -Dspring.profiles.active=service2 -jar configDemo-1.0-SNAPSHOT.jar
此时再在浏览器从查看8081端口的Demo项目。运行也OK。
配置服务器的好处看到了吧,只需要一个profiles.active 就可以使用不同的配置了! *_*