一、
spring cloud简介 基于spring boot
Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智能路由,微代理,控制总线)。
分布式系统的协调导致了样板模式, 使用Spring Cloud开发人员可以快速地支持实现这些模式的服务和应用程序
官方文档: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配置公网地址
服务端的配置
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);
}
}
检查是否能正常使用
客户端的配置
需要一个连接服务器的配置 默认为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);
}
}