热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

springcloudconfigclient

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

概述

之前我们简单的搭建了一个单点的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&#61;"http://maven.apache.org/POM/4.0.0" xmlns:xsi&#61;"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation&#61;"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0modelVersion><groupId>com.pupeiyuan.springcloudgroupId><artifactId>spring-CloudartifactId><version>0.0.1-SNAPSHOTversion><packaging>pompackaging><modules><module>springcloud-eurekamodule><module>springcloud-configServermodule><module>springcloud-configClientmodule><module>springcloud-ssmServermodule>modules><properties><project.build.sourceEncoding>UTF-8project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8project.reporting.outputEncoding><java.version>1.8java.version>properties><parent><groupId>org.springframework.bootgroupId><artifactId>spring-boot-starter-parentartifactId><version>1.5.2.RELEASEversion>parent><dependencyManagement><dependencies><dependency><groupId>org.springframework.cloudgroupId><artifactId>spring-cloud-dependenciesartifactId><version>Dalston.SR3version><type>pomtype><scope>importscope>dependency>dependencies>dependencyManagement><build><plugins><plugin><groupId>org.springframework.bootgroupId><artifactId>spring-boot-maven-pluginartifactId>plugin>plugins>build>
project>

此项目pom.xml

<project xmlns&#61;"http://maven.apache.org/POM/4.0.0" xmlns:xsi&#61;"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation&#61;"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0modelVersion><parent><groupId>com.pupeiyuan.springcloudgroupId><artifactId>spring-CloudartifactId><version>0.0.1-SNAPSHOTversion>parent><artifactId>springcloud-ssmServerartifactId><dependencies><dependency><groupId>junitgroupId><artifactId>junitartifactId><scope>testscope>dependency><dependency><groupId>org.springframework.bootgroupId><artifactId>spring-boot-starter-webartifactId>dependency><dependency><groupId>org.springframework.bootgroupId><artifactId>spring-boot-starter-aopartifactId>dependency><dependency><groupId>org.aspectjgroupId><artifactId>aspectjrtartifactId><version>1.8.7version>dependency><dependency><groupId>org.springframeworkgroupId><artifactId>spring-jdbcartifactId>dependency><dependency><groupId>org.springframework.bootgroupId><artifactId>spring-boot-starter-jdbcartifactId>dependency><dependency><groupId>org.springframework.bootgroupId><artifactId>spring-boot-starter-tomcatartifactId><scope>providedscope>dependency><dependency><groupId>org.mybatis.spring.bootgroupId><artifactId>mybatis-spring-boot-starterartifactId><version>1.3.1version>dependency><dependency><groupId>tk.mybatisgroupId><artifactId>mapper-spring-boot-starterartifactId><version>RELEASEversion>dependency><dependency><groupId>com.github.pagehelpergroupId><artifactId>pagehelper-spring-boot-starterartifactId><version>1.1.0version>dependency><dependency><groupId>com.github.jsqlparsergroupId><artifactId>jsqlparserartifactId><version>0.9.1version>dependency><dependency><groupId>mysqlgroupId><artifactId>mysql-connector-javaartifactId>dependency><dependency><groupId>com.alibabagroupId><artifactId>druid-spring-boot-starterartifactId><version>1.1.9version>dependency><dependency><groupId>jstlgroupId><artifactId>jstlartifactId><version>1.2version>dependency><dependency><groupId>taglibsgroupId><artifactId>standardartifactId><version>1.1.2version>dependency><dependency><groupId>com.github.jsqlparsergroupId><artifactId>jsqlparserartifactId><version>0.9.1version>dependency><dependency><groupId>org.apache.tomcat.embedgroupId><artifactId>tomcat-embed-jasperartifactId><scope>providedscope>dependency><dependency><groupId>org.apache.httpcomponentsgroupId><artifactId>httpclientartifactId>dependency><dependency><groupId>org.springframework.bootgroupId><artifactId>spring-boot-devtoolsartifactId><optional>trueoptional><scope>truescope>dependency><dependency><groupId>org.springframework.cloudgroupId><artifactId>spring-cloud-starter-configartifactId>dependency><dependency><groupId>org.springframework.cloudgroupId><artifactId>spring-cloud-starter-eurekaartifactId>dependency>dependencies><build><plugins><plugin><groupId>org.apache.maven.pluginsgroupId><artifactId>maven-compiler-pluginartifactId><configuration><source>1.7source><target>1.7target><encoding>UTF-8encoding>configuration>plugin><plugin><groupId>org.springframework.bootgroupId><artifactId>spring-boot-maven-pluginartifactId><configuration><fork>truefork>configuration>plugin>plugins>build>
project>

 

创建 bootstrap.properties

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

spring.application.name&#61;multiple #这里的名字对应的配置服务中的应用名称{application}
spring.cloud.config.discovery.enabled&#61;true
spring.cloud.config.discovery.service-id&#61;pringcloud-configServer #这里是config--server在eureka中注册的服务
spring.cloud.config.profile&#61;test #这里名字对应环境的标识{profile}
spring.cloud.config.label&#61;mastereureka.client.serviceUrl.defaultZone&#61;http://root:123456&#64;peer1:8000/eureka
eureka.instance.prefer-ip-address&#61;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;&#64;Configuration
&#64;MapperScan(
"com.pupeiyuan.mapper")
public class MyBatisConfig {&#64;Bean//此处的"multiple.datasource.master"需要你在application.properties中配置&#xff0c;详细信息看下面贴出的application.properties文件。&#64;ConfigurationProperties(prefix &#61; "multiple.datasource.master")public DataSource dbMaster() {DruidDataSource druidDataSource &#61; DruidDataSourceBuilder.create().build();//配置监控统计拦截的filters&#xff0c;去掉后监控界面sql无法统计&#xff0c;&#39;wall&#39;用于防火墙try {druidDataSource.setFilters("stat,wall,log4j");} catch (SQLException e) {// TODO Auto-generated catch block
e.printStackTrace();}// 通过connectProperties属性来打开mergeSql功能&#xff1b;慢SQL记录druidDataSource.setConnectionProperties("druid.stat.mergeSql&#61;true;druid.stat.slowSqlMillis&#61;5000");//合并多个DruidDataSource的监控数据druidDataSource.setUseGlobalDataSourceStat(true);return druidDataSource;}&#64;Bean&#64;ConfigurationProperties(prefix &#61; "multiple.datasource.slave")public DataSource dbSlave1() {DruidDataSource druidDataSource &#61; DruidDataSourceBuilder.create().build();//配置监控统计拦截的filters&#xff0c;去掉后监控界面sql无法统计&#xff0c;&#39;wall&#39;用于防火墙try {druidDataSource.setFilters("stat,wall,log4j");} catch (SQLException e) {// TODO Auto-generated catch block
e.printStackTrace();}// 通过connectProperties属性来打开mergeSql功能&#xff1b;慢SQL记录druidDataSource.setConnectionProperties("druid.stat.mergeSql&#61;true;druid.stat.slowSqlMillis&#61;5000");//合并多个DruidDataSource的监控数据druidDataSource.setUseGlobalDataSourceStat(true);return druidDataSource;}/*** 核心动态数据源** &#64;return 数据源实例*/&#64;Beanpublic DataSource dynamicDataSource() {DynamicRoutingDataSource dataSource &#61; new DynamicRoutingDataSource();dataSource.setDefaultTargetDataSource(dbMaster());Map dataSourceMap &#61; new HashMap<>(4);dataSourceMap.put(DataSourceKey.DB_MASTER, dbMaster());dataSourceMap.put(DataSourceKey.DB_SLAVE1, dbSlave1());dataSource.setTargetDataSources(dataSourceMap);return dataSource;}&#64;Beanpublic SqlSessionFactory sqlSessionFactory() throws Exception {SqlSessionFactoryBean sqlSessionFactoryBean &#61; new SqlSessionFactoryBean();sqlSessionFactoryBean.setDataSource(dynamicDataSource());//此处设置为了解决找不到mapper文件的问题//sqlSessionFactoryBean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mapper/*.xml"));return sqlSessionFactoryBean.getObject();}&#64;Beanpublic SqlSessionTemplate sqlSessionTemplate() throws Exception {return new SqlSessionTemplate(sqlSessionFactory());}/*** 事务管理** &#64;return 事务管理实例*/&#64;Beanpublic PlatformTransactionManager platformTransactionManager() {return new DataSourceTransactionManager(dynamicDataSource());}}

 

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

 

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

 

转:https://www.cnblogs.com/pypua/p/10122718.html



推荐阅读
author-avatar
如果-不曾开始_632
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有