springcloud的配置管理
1.什么是springcloud
Spring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。Spring并没有重复制造轮子,它只是将目前各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过Spring Boot风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。
2. springcloud的作用
Spring Cloud 为开发者提供了在分布式系统(配置管理,服务发现,熔断,路由,微代理,控制总线,一次性token,全居琐,leader选举,分布式session,集群状态)中快速构建的工具,使用Spring Cloud的开发者可以快速的启动服务或构建应用、同时能够快速和云平台资源进行对接。
3. springcloud的配置管理
把各个应用的配置信息集中管理起来,使用一套机制或系统来管理,极大的提高系统开发的生产效率,同时提高系统开发环境和生产环境运行的一致性。
这里目的是将jdbc四大参数管理,jdbc.properties在GitHub中。
百度的分布式配置管理平台:disconf
淘宝的分布式配置管理平台:Diamond
携程的分布式配置管理平台:apollo
4.springcloud服务端依赖的环境
用来抓取远程连接配置内容
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.9.RELEASE</version>
</parent>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Dalston.SR4</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</dependency>
</dependencies>
java代码:
package cn.zyp;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.config.server.EnableConfigServer;
/*启用分布式配置中心,读取远程git仓库获取配置
* 所有spring的配置中心的配置文件,都有以下几种格式
* 1.配置文件属于哪个应用 (application)
* 2.配置文件是属于哪个开发阶段的(profile) 开发阶段 测试阶段 产品阶段
* 3.在git仓库下的哪个分支(label)
* */
@EnableConfigServer
@SpringBootApplication
public class Main {
public static void main(String[] args) {
SpringApplication.run(Main.class, args);
}
}
Application.properties:
spring.cloud.config.server.git.uri=你的项目github地址(不要.git后缀)
server.port=端口(自己设,不要冲突就行)
5.springcloud客户端依赖的环境
用来运行项目以及替换数据源
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Brixton.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
Java代码:
//运行代码
package ssam;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class Main {
public static void main(String[] args) {
SpringApplication.run(Main.class, args);
}
}
//替换数据源代码
package ssam;
import javax.sql.DataSource;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import com.alibaba.druid.pool.DruidDataSource;
/**
* 默认优先级大于系统自带的数据源,会覆盖原有的数据源
* @author Administrator
*
*/
@Configuration
public class Config {
@Value("${driverClass}")
private String driverClass;
@Value("${url}")
private String url;
@Value("${username1}")
private String username1;
@Value("${password}")
private String password;
@Bean
public DataSource dateSoure(){
DruidDataSource dds = new DruidDataSource();
dds.setUrl(url);
dds.setDriverClassName(driverClass);
dds.setUsername(username1);
dds.setPassword(password);
return dds;
}
}
//bootstrap.properties:
spring.cloud.config.uri=http://localhost:8089(你的服务端地址)
spring.application.name=jdbc(项目名)
spring.profiles.active=dev(开发阶段)
例如远程有3个配置文件:
Jdbc-dev.properties
Jdbc-test.properties
Jdbc-pro.properties
Jdbc就是项目名,dev代表开发阶段,test代表测试阶段,pro代表发布阶段,环境不同ip地址不同,根据不同的环境配置。