Servlet+MyBatis项目转Spring Cloud微服务,多数据源配置修改建议

一、项目需求

在开发过程中,由于技术的不断迭代,为了提高开发效率,需要对原有项目的架构做出相应的调整。

二、存在的问题

为了不影响项目进度,架构调整初期只是把项目做了简单的maven管理,引入springboot并未做spring cloud微服务处理。但随着项目的进一步开发,急需拆分现有业务,做微服务处理。因此架构上的短板日益突出。spring cloud config 无法完全应用,每次项目部署需要修改大量配置文件。严重影响开发效率,因此便萌生了对项目架构再次调整的决心。

三、调整建议

为了兼容以前的代码版本,尽量不修改现有的代码结构,以免增加额外的工作量并且为了更好的应用cloud config。

首先,创建JdbcConfigBean类,用以读取配置文件,实例代码入如下(仅供参考):


import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.stereotype.Component;

@RefreshScope
@Component("jdbcConfigBean")
public class JdbcConfigBean {

    @Value("${jdbc.driver}")
    private String driver;

    @Value("${db1.jdbc.url}")
    private String url;
    @Value("${db1.jdbc.username}")
    private String username;
    @Value("${db1.jdbc.password}")
    private String password;

    @Value("${db2.jdbc.url}")
    private String db2_url;
    @Value("${db2.jdbc.username}")
    private String db2_username;
    @Value("${db2.jdbc.password}")
    private String db2_password;

    // 其他数据源

    // 其他配置

    // 相应的getter setter 方法

}

其次,创建数据源,代码示例如下(仅供参考):


       /**
     * xml Mabatis XML配置文件
     * @param xml
     * @return
     */
    public static SqlSessionFactory create(String xml){

        JdbcConfigBean jdbcConfigBean = (JdbcConfigBean) SpringContextUtil.getBean("jdbcConfigBean");

        Properties properties = new Properties();

        properties.setProperty("jdbc.driver", jdbcConfigBean.getDriver());

        properties.setProperty("db1.jdbc.url", jdbcConfigBean.getUrl());
        properties.setProperty("db1.jdbc.username", jdbcConfigBean.getUsername());
        properties.setProperty("db1.jdbc.password", jdbcConfigBean.getPassword());

        properties.setProperty("db2.virtual.jdbc.url", jdbcConfigBean.getDb2_url());
        properties.setProperty("db2.virtual.jdbc.username", jdbcConfigBean.getDb2_username());
        properties.setProperty("db2.virtual.jdbc.password", jdbcConfigBean.getDb2_password());

        // 其他属性

        try {
            Reader reader = Resources.getResourceAsReader(xml);
            SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
            return sqlSessionFactoryBuilder.build(reader, properties);
        } catch (IOException e) {
            log.error("创建数据源失败:" + e.getMessage());
        }

        return null;
    }

以上,便可以做多数据元的配置,并且在不改动现有代码结构的条件下很好的集成spring cloud config和Mybatis。

四、总结

写作目的不是为了解决具体的问题,因为每个人遇到的项目都不相同,问题也不会一样,应用场景也不尽相同。对于具体问题可能有失参考意义。但是我们也应该看到通用的部分,比如多数据源的配置,cloud config的应用等等。

最后需要说明的一点是不要拘泥于具体的实现,而是要体会其中的逻辑,理解技术应用的方式。具体实现并不重要,重要的是解决问题的过程以及其中的思想,为什么要这样做,为什么可以这样做,这样做的好处在哪里?真正理解技术,这些问题便不难回答。

总结难免有不当之处,欢迎诸位指正!希望可以通过不断的讨论总结精进技术。让我们同技术死磕到底!

来源:https://blog.csdn.net/weixin_35971547/article/details/85632346

原文地址:https://www.cnblogs.com/qixidi/p/10229220.html

时间: 2024-11-08 01:34:10

Servlet+MyBatis项目转Spring Cloud微服务,多数据源配置修改建议的相关文章

从天气项目看Spring Cloud微服务治理

网上搜集的资源,个人感觉还行,分享了从天气项目看Spring Cloud微服务治理网盘地址:https://pan.baidu.com/s/1ggn5uld 密码: n6bn备用地址(腾讯微云):https://share.weiyun.com/7a101b0864bc027c9c1d2605e0012472 密码:s5CApH 原文地址:http://blog.51cto.com/11148206/2070057

Spring Cloud微服务Sentinel+Apollo限流、熔断实战

在Spring Cloud微服务体系中,由于限流熔断组件Hystrix开源版本不在维护,因此国内不少有类似需求的公司已经将眼光转向阿里开源的Sentinel框架.而以下要介绍的正是作者最近两个月的真实项目实践过程,这中间被不少网络Demo示例级别水文误导过,为了以正视听特将实践过程加以总结,希望能够帮到有类似需要的朋友! 一.Sentinel概述 在基于Spring Cloud构建的微服务体系中,服务之间的调用链路会随着系统的演进变得越来越长,这无疑会增加了整个系统的不可靠因素.在并发流量比较高

spring cloud微服务分布式云架构集成项目

Spring Cloud集成项目有很多,下面我们列举一下和Spring Cloud相关的优秀项目,我们的企业架构中用到了很多的优秀项目,说白了,也是站在巨人的肩膀上去整合的.在学习Spring Cloud之前大家必须了解一下相关项目,希望可以帮助到大家. Spring Cloud Config 配置管理工具包,让你可以把配置放到远程服务器,集中化管理集群配置,目前支持本地存储.Git以及Subversion. Spring Cloud Bus 事件.消息总线,用于在集群(例如,配置变化事件)中传

Spring Cloud微服务分布式云架构-集成项目简介

Spring Cloud集成项目有很多,下面我们列举一下和Spring Cloud相关的优秀项目,我们的企业架构中用到了很多的优秀项目,说白了,也是站在巨人的肩膀上去整合的.在学习Spring Cloud之前大家必须了解一下相关项目,希望可以帮助到大家. Spring Cloud Config 配置管理工具包,让你可以把配置放到远程服务器,集中化管理集群配置,目前支持本地存储.Git以及Subversion. Spring Cloud Bus ?事件.消息总线,用于在集群(例如,配置变化事件)中

spring cloud微服务分布式云架构 - Spring Cloud集成项目简介

Spring Cloud集成项目有很多,下面我们列举一下和Spring Cloud相关的优秀项目,我们的企业架构中用到了很多的优秀项目,说白了,也是站在巨人的肩膀上去整合的.在学习Spring Cloud之前大家必须了解一下相关项目,希望可以帮助到大家. Spring Cloud Config 配置管理工具包,让你可以把配置放到远程服务器,集中化管理集群配置,目前支持本地存储.Git以及Subversion. Spring Cloud Bus ?事件.消息总线,用于在集群(例如,配置变化事件)中

Spring Cloud微服务分布式云架构-集成项目

Spring Cloud集成项目有很多,下面我们列举一下和Spring Cloud相关的优秀项目,我们的企业架构中用到了很多的优秀项目,说白了,也是站在巨人的肩膀上去整合的.在学习Spring Cloud之前大家必须了解一下相关项目,希望可以帮助到大家. Spring Cloud Config 配置管理工具包,让你可以把配置放到远程服务器,集中化管理集群配置,目前支持本地存储.Git以及Subversion. Spring Cloud Bus ?事件.消息总线,用于在集群(例如,配置变化事件)中

(三)spring cloud微服务分布式云架构 - Spring Cloud集成项目简介

Spring Cloud集成项目有很多,下面我们列举一下和Spring Cloud相关的优秀项目,我们的企业架构中用到了很多的优秀项目,说白了,也是站在巨人的肩膀上去整合的.在学习Spring Cloud之前大家必须了解一下相关项目,希望可以帮助到大家. Spring Cloud Config 配置管理工具包,让你可以把配置放到远程服务器,集中化管理集群配置,目前支持本地存储.Git以及Subversion. Spring Cloud Bus ?事件.消息总线,用于在集群(例如,配置变化事件)中

Spring Cloud微服务分布式云架构技术点

spring cloud本身提供的组件就很多,但我们需要按照企业的业务模式来定制企业所需要的通用架构,那我们现在需要考虑使用哪些技术呢? 下面我针对于spring cloud微服务分布式云架构做了以下技术总结,希望可以帮助到大家: View: H5.Vue.js.Spring Tag.React.angularJs Spring Boot/Spring Cloud:Zuul.Ribbon.Feign.Turbine.Hystrix.Oauthor2.Sleuth.API Gateway.Spri

spring cloud微服务分布式云架构 - 整合架构的技术点

spring cloud本身提供的组件就很多,但我们需要按照企业的业务模式来定制企业所需要的通用架构,那我们现在需要考虑使用哪些技术呢? 下面我针对于spring cloud微服务分布式云架构做了以下技术总结,希望可以帮助到大家: View: H5.Vue.js.Spring Tag.React.angularJs Spring Boot/Spring Cloud:Zuul.Ribbon.Feign.Turbine.Hystrix.Oauthor2.Sleuth.API Gateway.Spri