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地址不同,根据不同的环境配置。