概述
spring cloud config 学习后的小结:
spring cloud config提供了一个集中管理配置文件的项目,是spring cloud 技术体系的一个子项目;目前支持本地存储,Git以及Subversion,默认配置是git服务器。
搭建spring cloud config项目作为配置服务器的过程分三个环节:
1.以码云的git服务器为例进行搭建,首先在http://git.oschina.net/,上注册一个用户并创建一个git项目,作为项目配置文件管理的一个项目,把我们要用到的项目配置文件 通过git上传到git服务器上,例如:
config-demo-dev.yml的具体参数:
spring: datasource: username: test password: '{cipher}851a6effab6619f43157a714061f4602be0131b73b56b0451a7e268c880daea3'
到此配置文件项目创建完成,
2.接下来完成spring cloud config server 服务器的搭建,具体步骤如下:
- 使用idea创建一个config-server的项目
- 项目名称为:config-server
- 项目的pom依赖:
<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> <spring-cloud.version>Dalston.SR2</spring-cloud.version> </properties> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-config</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-config-server</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</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>
- 创建一个启动类:
@SpringBootApplication @EnableConfigServer public class SpringConfigApplication { public static void main(String[] args) { SpringApplication.run(SpringConfigApplication.class, args); } }
表明这个服务是管理配置文件的服务。
- 在再项目资源目录创建一个项目配置文件:
-
application.yml
- 文件内容如下:
server: port: 8088 #配置服务器访问的端口号 spring: cloud: config: server: git: uri: https://git.oschina.net/jason0824/spring-config-demo.git #git服务器地址,此服务器是上传配置文件的服务器地址 search-paths: config,encryption #要匹配的git服务器文件目录 application: name: config-demo-dev #配置文件的名称 profiles: active: master #当前分支名称
配置完成可能以启动服务:如:http://localhost:8088/config-demo-dev/master
返回结果如下:
{"name":"config-demo-dev","profiles":["master"],"label":null,"version":"2f97c85070294f8157334810bcf27c29ec5366b6","state":null,"propertySources":[{"name":"https://git.oschina.net/jason0824/spring-config-demo.git/config-demo-dev.yml","source":{"spring.datasource.username":"dbuser========myname","spring.datasource.password":"851a6effab6619f43157a714061f4602be0131b73b56b0451a7e268c880daea3"}}]}证明已经读取到了刚才上传到git服务器的配置文件内容,同样也可以用命令行的方式来访问,访问方式:curl
http://localhost:8088/config-demo-dev/master
得到的结果和上面访问的方式是一样,只是这个方式是展现在命令行里面的。{"name":"config-demo-dev","profiles":["master"],"label":null,"version":"2f97c85070294f8157334810bcf27c29ec5366b6","state":null,"propertySources":[{"name":"https://git.oschina.net/jason0824/spring-config-demo.git/config-demo-dev.yml","source":{"spring.datasource.username":"dbuser========myname","spring.datasource.password":"851a6effab6619f43157a714061f4602be0131b73b56b0451a7e268c880daea3"}}]}bogon:lztoon chenxiaonan$
至此搭建的spring cloud config server项目完成,可以正常使用。
3.再搭建一个客户端项目来使用刚才搭建的配置服务器,创建步骤如下:
如第二步一样,使用idea创建一个名为:spring-config-client项目。
- pom依赖如下:
<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> <spring-cloud.version>Dalston.SR2</spring-cloud.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</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-web</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>
- 创建一个项目启动类:如 ClientApplication
@SpringBootApplication public class ClientApplication { public static void main(String[] args) { SpringApplication.run(ClientApplication.class, args); } }
- 创建两个配置文件分别为:application.yml,bootstrap.yml
- 之所以要创建一个boostrap.yml文件是因为此文件启动的级别要优先其他任何的配置文件,在这个文件里面配置了spring cloud config server项目,它要优先于其他的配置文件启动
- application.yml
- 内容如下:
- server:
- port:8001 #表示客户端项目启动访问的端口号
- bootstrap.yml
- 内容如下:spring:
application: name: config-demo-dev # 对应config-server所获取的配置文件的{application} cloud: config: uri: http://localhost:8088/ profile: dev # 指定profile,对应config-server所获取的配置文件中的{profile} label: master #分支
上面标识的config-demo-dev名称一定是配置文件名称,确保名称正确,否则在读取配置文件属性的时候会报错。
- 创建一个可以访问属性文件的controller类,看看能否读取到真正配置文件的属性信息;
@RestController @RefreshScope public class SpringClientController { @Value("${spring.datasource.username}") private String name; @RequestMapping(value = "/refresh") public String refresh(){ return "更新配置 "+this.name; } }
@RefreshScope此注解表示可以实时刷新到配置文件信息的变更,读取配置文件最新的属性信息。
当然还要一个严重的问题是配置文件更改了目前还不能及时读取到,需要重新启动服务才能读取更新的配置文件信息,原因是git服务器没配置一个消息机制来通知客户端项目
需要配置一个消息服务器使用消息机制来通知客户端,具体配置下次分享。可者spring的官方网站有相应的demo来提供学习参考。
下面就可以启动项目来访问一下读取到的属性信息
访问地址:http://localhost:8881/ref
得到如下信息:
更新配置 dbuser========myname表示已经读取到了config-demo-dev文件里面配置的 spring.datasource.username这个属性。
访问的流程如如下所示:
最后
以上就是冷艳白昼为你收集整理的spring cloud config学习入门初探的全部内容,希望文章能够帮你解决spring cloud config学习入门初探所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复