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

本文探讨了在项目开发中,从简单的Maven管理到SpringBoot,再到SpringCloud微服务架构的演变过程。针对架构调整的需求,提出了兼容旧代码、应用CloudConfig的策略,通过创建JdbcConfigBean类和数据源,实现了多数据源的灵活配置,提高了开发效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、项目需求

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

二、存在的问题

为了不影响项目进度,架构调整初期只是把项目做了简单的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的应用等等。

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值