zoukankan      html  css  js  c++  java
  • spring cloud config--client

    概述

    之前我们简单的搭建了一个单点的config-server服务,实现配置文件的统一管理,本次文章将实现config-client是如何从config-server中获取到统一配置文件信息的

    1.创建springcloud--ssmServer服务

    此服务是之前的springBoot继承了mybatis和springMvc等框架的完整项目,这里用来当做config-client,模仿真实的环境

    父项目pom.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <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>com.pupeiyuan.springcloud</groupId>
        <artifactId>spring-Cloud</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <packaging>pom</packaging>
        <!-- 包含的子项目 -->
        <modules>
            <module>springcloud-eureka</module>
            <module>springcloud-configServer</module>
            <module>springcloud-configClient</module>
            <module>springcloud-ssmServer</module>
        </modules>
        <!-- java版本信息 -->
        <properties>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
            <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
            <java.version>1.8</java.version>
        </properties>
        <!-- springboot以来的父项目 -->
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>1.5.2.RELEASE</version>
        </parent>
    
        <dependencyManagement>
            <dependencies>
                <!-- springcloud版本依赖 -->
                <dependency>
                    <groupId>org.springframework.cloud</groupId>
                    <artifactId>spring-cloud-dependencies</artifactId>
                    <version>Dalston.SR3</version>
                    <type>pom</type>
                    <scope>import</scope>
                </dependency>
            </dependencies>
        </dependencyManagement>
    
        <build>
            <plugins>
                <!-- maven插件 -->
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
            </plugins>
        </build>
    </project>

    此项目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>
        <parent>
            <groupId>com.pupeiyuan.springcloud</groupId>
            <artifactId>spring-Cloud</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </parent>
        <artifactId>springcloud-ssmServer</artifactId>
    
        <dependencies>
            <!-- 单元测试 -->
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <scope>test</scope>
            </dependency>
            <!-- 支持springWEB web支持: 1、web mvc; 2、restful; 3、jackjson支持; 4、aop ........ -->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
            <!-- AOP依赖模块 -->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-aop</artifactId>
            </dependency>
            <dependency>
                <groupId>org.aspectj</groupId>
                <artifactId>aspectjrt</artifactId>
                <version>1.8.7</version>
            </dependency>
            <!-- jdbc -->
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-jdbc</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-jdbc</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-tomcat</artifactId>
                <scope>provided</scope>
            </dependency>
    
            <!-- Mybatis -->
            <dependency>
                <groupId>org.mybatis.spring.boot</groupId>
                <artifactId>mybatis-spring-boot-starter</artifactId>
                <version>1.3.1</version>
            </dependency>
            <!-- 通用Mapper -->
            <dependency>
                <groupId>tk.mybatis</groupId>
                <artifactId>mapper-spring-boot-starter</artifactId>
                <version>RELEASE</version>
            </dependency>
            <!-- 分页助手 -->
            <dependency>
                <groupId>com.github.pagehelper</groupId>
                <artifactId>pagehelper-spring-boot-starter</artifactId>
                <version>1.1.0</version>
            </dependency>
            <dependency>
                <groupId>com.github.jsqlparser</groupId>
                <artifactId>jsqlparser</artifactId>
                <version>0.9.1</version>
            </dependency>
    
            <!-- mysql 数据库驱动. -->
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
            </dependency>
            <!-- 连接池 -->
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>druid-spring-boot-starter</artifactId>
                <version>1.1.9</version>
            </dependency>
            <!-- jstl -->
            <dependency>
                <groupId>jstl</groupId>
                <artifactId>jstl</artifactId>
                <version>1.2</version>
            </dependency>
            <dependency>
                <groupId>taglibs</groupId>
                <artifactId>standard</artifactId>
                <version>1.1.2</version>
            </dependency>
            <!-- JSP相关 -->
            <dependency>
                <groupId>com.github.jsqlparser</groupId>
                <artifactId>jsqlparser</artifactId>
                <version>0.9.1</version>
            </dependency>
            <dependency>
                <groupId>org.apache.tomcat.embed</groupId>
                <artifactId>tomcat-embed-jasper</artifactId>
                <scope>provided</scope>
            </dependency>
            <!-- httpclient -->
            <dependency>
                <groupId>org.apache.httpcomponents</groupId>
                <artifactId>httpclient</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-devtools</artifactId>
                <optional>true</optional>
                <scope>true</scope>
            </dependency>
    
            <!-- spring cloud -->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-config</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-eureka</artifactId>
            </dependency>
        </dependencies>
    
        <build>
            <plugins>
                <!-- java编译插件 -->
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <configuration>
                        <source>1.7</source>
                        <target>1.7</target>
                        <encoding>UTF-8</encoding>
                    </configuration>
                </plugin>
                <!-- 这是spring boot devtool plugin -->
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                    <configuration>
                        <!--fork : 如果没有该项配置,肯呢个devtools不会起作用,即应用不会restart -->
                        <fork>true</fork>
                    </configuration>
                </plugin>
            </plugins>
        </build>
    </project>

    创建 bootstrap.properties

    config文件中这里要创建bootstrap.properties或者bootstrap.yml,一些关于config的配置需要在这里配置,因为spring cloud默认从这个配置文件中读取config,其他的配置还可以从燕来的配置文件application.properties中来设置

    spring.application.name=multiple #这里的名字对应的配置服务中的应用名称{application}
    spring.cloud.config.discovery.enabled=true
    spring.cloud.config.discovery.service-id=pringcloud-configServer #这里是config--server在eureka中注册的服务
    spring.cloud.config.profile=test #这里名字对应环境的标识{profile}
    spring.cloud.config.label=master
    
    eureka.client.serviceUrl.defaultZone=http://root:123456@peer1:8000/eureka
    eureka.instance.prefer-ip-address=true

    MyBatisConfig.java

    此配置文件是初始化datasource注册bean的

    package com.pupeiyuan.config;
    
    import java.sql.SQLException;
    import java.util.HashMap;
    import java.util.Map;
    import java.util.Properties;
    
    import javax.sql.DataSource;
    
    import org.apache.ibatis.session.SqlSessionFactory;
    import org.mybatis.spring.SqlSessionFactoryBean;
    import org.mybatis.spring.SqlSessionTemplate;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
    import org.springframework.boot.context.properties.ConfigurationProperties;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.core.annotation.Order;
    import org.springframework.core.io.Resource;
    import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
    import org.springframework.core.io.support.ResourcePatternResolver;
    import org.springframework.jdbc.datasource.DataSourceTransactionManager;
    import org.springframework.transaction.PlatformTransactionManager;
    
    import com.alibaba.druid.pool.DruidDataSource;
    import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceBuilder;
    import com.github.pagehelper.PageHelper;
    import com.pupeiyuan.core.DataSourceKey;
    import com.pupeiyuan.core.DynamicRoutingDataSource;
    
    import tk.mybatis.spring.annotation.MapperScan;
    import tk.mybatis.spring.mapper.MapperScannerConfigurer;
    
    @Configuration
    @MapperScan("com.pupeiyuan.mapper")
    public class MyBatisConfig {
          @Bean
            //此处的"multiple.datasource.master"需要你在application.properties中配置,详细信息看下面贴出的application.properties文件。
            @ConfigurationProperties(prefix = "multiple.datasource.master")
            public DataSource dbMaster() {
              DruidDataSource druidDataSource = DruidDataSourceBuilder.create().build();
              //配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
                try {
                    druidDataSource.setFilters("stat,wall,log4j");
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            
                // 通过connectProperties属性来打开mergeSql功能;慢SQL记录
                druidDataSource.setConnectionProperties("druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000");
                //合并多个DruidDataSource的监控数据
                druidDataSource.setUseGlobalDataSourceStat(true);
                return druidDataSource;
            }
    
            @Bean
            @ConfigurationProperties(prefix = "multiple.datasource.slave")
            public DataSource dbSlave1() {
                 DruidDataSource druidDataSource = DruidDataSourceBuilder.create().build();
                  //配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
                    try {
                        druidDataSource.setFilters("stat,wall,log4j");
                    } catch (SQLException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                
                    // 通过connectProperties属性来打开mergeSql功能;慢SQL记录
                    druidDataSource.setConnectionProperties("druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000");
                    //合并多个DruidDataSource的监控数据
                    druidDataSource.setUseGlobalDataSourceStat(true);
                    return druidDataSource;
            }
            /**
             * 核心动态数据源
             *
             * @return 数据源实例
             */
            @Bean
            public DataSource dynamicDataSource() {
                DynamicRoutingDataSource dataSource = new DynamicRoutingDataSource();
                dataSource.setDefaultTargetDataSource(dbMaster());
                Map<Object, Object> dataSourceMap = new HashMap<>(4);
                dataSourceMap.put(DataSourceKey.DB_MASTER, dbMaster());
                dataSourceMap.put(DataSourceKey.DB_SLAVE1, dbSlave1());
                dataSource.setTargetDataSources(dataSourceMap);
                return dataSource;
            }
        
            @Bean
            public SqlSessionFactory sqlSessionFactory() throws Exception {
                SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
                sqlSessionFactoryBean.setDataSource(dynamicDataSource());
                //此处设置为了解决找不到mapper文件的问题
                //sqlSessionFactoryBean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mapper/*.xml"));
                return sqlSessionFactoryBean.getObject();
            }
            @Bean
            public SqlSessionTemplate sqlSessionTemplate() throws Exception {
                return new SqlSessionTemplate(sqlSessionFactory());
            }
            /**
             * 事务管理
             *
             * @return 事务管理实例
             */
            @Bean
            public PlatformTransactionManager platformTransactionManager() {
                return new DataSourceTransactionManager(dynamicDataSource());
            }
        
    }

    2.下面我们在启动了config-server的前提下,启动此项目,看是否能获取到数据源信息,并成功装配到spring

    这里测试没有问题,说明已经成功的从config-server中获取到了配置信息

  • 相关阅读:
    hdu 1392 fzu 1333 Surround the Trees 简单凸包
    STL的应用 multiset bitset next_permutation
    hdu 3711 Binary Number 位运算(^ 与&)的应用
    鸽舍原理
    hdu 4002 Find the maximum 2011 大连网络赛 1002 Find the maximum
    组合数学
    Delphi程序破解技术概要
    NET的URL怎么静态化?
    David I谈Delphi的现状及未来发展方向
    使用Dede破解Delphi软件实战
  • 原文地址:https://www.cnblogs.com/pypua/p/10122718.html
Copyright © 2011-2022 走看看