一、 spring cloud简介    基于spring boot
        Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智能路由,微代理,控制总线)。
分布式系统的协调导致了样板模式, 使用Spring Cloud开发人员可以快速地支持实现这些模式的服务和应用程序

         中文文档:https://springcloud.cc/

         官方文档:http://projects.spring.io/spring-cloud/#quick-start

   

二、spring cloud config配置中心


    Spring Cloud Config就是我们通常意义上的配置中心。Spring Cloud Config-把应用原本放在本地文件的配置抽取出来放在中心服务器,本质是配置信息从本地迁移到云端。从而能够提供更好的管理、发布能力。

        Spring Cloud Config分服务端和客户端,服务端负责将git(svn)中存储的配置文件发布成REST接口,客户端可以从服务端REST接口获取配置。


但客户端并不能主动感知到配置的变化,从而主动去获取新的配置,这需要每个客户端通过POST方法触发各自的/refresh。


一个简单的案例

需要在github上创建一个项目  把连接数据的四要素(properties文件)放在该项目下    该配置文件分为三个阶段

jdbc-dev.properties======开发版  ip配置localhost
jdbc-test.properties======测试版  ip配置局域网
jdbc-pro.properties=======上线版  ip配置公网地址

springcloud nacos配置中心配置redis spring cloud 配置中心_配置文件


服务端的配置

    pom.xml中的配置

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>cn.et</groupId>
  <artifactId>SPRINGCLOUD_CONFIGSERVER</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  
  
  
  <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>
</project>



   在resource中创建一个application.properties文件  配置如下

spring.cloud.config.server.git.uri=https://github.com/panhaigang/distributedFile     用于连接远程(github)
server.port=8089     对外暴露端口



   启动服务端

package cn.et;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.config.server.EnableConfigServer;
/*
 * 启动分布式配置中心  读取远程git仓库配置文件
 * 
 * 所有spring的配置中心的配置文件 都有以下几种格式组成
 *   1 配置文件属于哪个应用的(Application)
 *   2 配置文件属于哪个阶段(profile)     开发阶段   测试阶段   产品阶段
 * 
 * 
 * 
 */
@EnableConfigServer
@SpringBootApplication
public class Main {
	public static void main(String[] args) {
		SpringApplication.run(Main.class, args);
	}
}


    检查是否能正常使用

springcloud nacos配置中心配置redis spring cloud 配置中心_配置文件_02



客户端的配置

      需要一个连接服务器的配置    默认为bootstrap.properties文件

spring.cloud.config.uri=http://localhost:8089    连接服务器的地址
spring.application.name=jdbc    那个应用的配置文件       
spring.profiles.active=pro      那个阶段的配置文件



    因为spring cloud是基于spring boot 任就需要一个application.properties文件

    pom.xml配置

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>cn.et</groupId>
  <artifactId>SPRINGCLOUD-CONFINGCLIENT</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>war</packaging>
  
  
  
    <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-starter-config</artifactId>     客户端
	    </dependency>
	<dependencies>



     接收从远程云端连接数据库的四要素的类

package cn.et.works;

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;


@Configuration
public class Configjdbc {
	
	
	@Value("${username1}")
	private String username1;
	
	@Value("${password}")
	private String password;
	
	@Value("${driverClass}")
	private String driverClass;
	
	
	@Value("${url}")
	private String url;
	
	
	
	
	@Bean
	public DataSource myDataSource(){
		DruidDataSource dds=new DruidDataSource();
		dds.setUrl(url);
		dds.setPassword(password);
		dds.setUsername(username1);
		dds.setDriverClassName(driverClass);
		return dds;
	}
	
}





   启动客户端     可以用一个项目来测试一下是否成功(我反正是成功了的       项目地址  https://github.com/panhaigang/SPRINGCLOUD_CONFINGCLIENT  欢迎下载使用)

package cn.et.works;


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);
    }
}