Java高级教程之SpringCloud-12:SpringCloud Config使用git配置中心
SpringCloud使用Config组件实现分布式的配置,不同的环境配置可以从远程或本地的Git/SVN代码管理库拉取,然后更新到相应的环境。比如数据库连接的配置,生产环境和开发环境肯定是分开的不同数据库,只需要在Git里存放这两个环境的配置文件,就可以让微服务自动获取到相应的配置。
https://spring.io/projects/spring-cloud-config
https://cloud.spring.io/spring-cloud-config/reference/html/
首先可以把之前的工程都放到git上面。这里使用阿里云的git,新建项目spring-cloud-demo,权限设置为公开。
https://code.aliyun.com
git clone https://code.aliyun.com/cheeringhou/spring-cloud-demo.git
git pull
git add *
git commit
git push
现在就可以看到工程已经传到git上面。
新建一个Maven工程,并加入SpringCloud和SpringBoot依赖。
在pom.xml中加入spring-cloud-config-server的依赖。
新建ApplicaionMain作为主入口类,并加入@EnableConfigServer注解。
package com.lpplpp.config.app; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.config.server.EnableConfigServer; @SpringBootApplication @EnableConfigServer public class ApplicationMain { public static void main(String[] args) { SpringApplication.run(ApplicationMain.class, args); System.out.println("config microservice is running"); } }
接着,加入application.yml,设置微服务端口为8888。在git项目spring-cloud-demo主干master中新建一个文件夹,命名为microserviceconfig,里面会存放配置文件。
在文件夹microserviceconfig中新建jdbc-dev.properties,内容为开发数据库配置。
jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1:3306/dev?useUnicode=true&characterEncoding=utf8
jdbc.username=root
jdbc.password=123456
再新建jdbc-prod.properties,内容为生产环境数据库配置。这两个文件都要上传到git上面的microserviceconfig目录里面。
jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1:3306/prod?useUnicode=true&characterEncoding=utf8
jdbc.username=root
jdbc.password=123456
启动这个微服务ApplicationMain,访问http://localhost:8888/jdbc-dev.properties可以得到相应的配置信息。
访问结果:
jdbc.driverClassName: com.mysql.jdbc.Driver jdbc.password: 123456 jdbc.url: jdbc:mysql://127.0.0.1:3306/dev?useUnicode=true&characterEncoding=utf8 jdbc.username: root
同样,访问生产环境配置文件http://localhost:8888/jdbc-prod.properties可以得到生产环境的配置信息。
访问结果:
jdbc.driverClassName: com.mysql.jdbc.Driver jdbc.password: 123456 jdbc.url: jdbc:mysql://127.0.0.1:3306/prod?useUnicode=true&characterEncoding=utf8 jdbc.username: root