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的应用等等。
最后需要说明的一点是不要拘泥于具体的实现,而是要体会其中的逻辑,理解技术应用的方式。具体实现并不重要,重要的是解决问题的过程以及其中的思想,为什么要这样做,为什么可以这样做,这样做的好处在哪里?真正理解技术,这些问题便不难回答。
小结难免有不当之处,欢迎诸位指正!希望可以通过不断的讨论小结精进技术。让我们同技术死磕到底!
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对脚本之家的支持。如果你想了解更多相关内容请查看下面相关链接
您可能感兴趣的文章:
- Spring Cloud Spring Boot mybatis分布式微服务云架构(十九)多数据源配置与使用(1)
- Spring Cloud Spring Boot mybatis分布式微服务云架构(二十)多数据源配置与使用(2)
- Spring Cloud Spring Boot mybatis分布式微服务云架构(四十四)动态修改日志级别(1)
- Spring Cloud Spring Boot mybatis分布式微服务云架构(四十五)动态修改日志级别(2)
- Spring Cloud Spring Boot mybatis分布式微服务云架构(四)属性配置文件详解(2)
- Spring Cloud Spring Boot mybatis 企业分布式微服务云(二)服务注册与发现(Consul)
- 从天气项目看Spring Cloud微服务治理分享
- Spring Cloud Spring Boot mybatis 企业分布式微服务云(八)服务容错保护(Hystrix依赖隔离)【Dalston版】
- Spring Cloud Spring Boot mybatis分布式微服务云架构(十七)使用Spring-data-jpa(1)
- (九)整合spring cloud云服务架构 - HongHu commonservice-eureka 项目构建过程
- SpringCloud SpringBoot mybatis 分布式微服务(三)Spring Boot构建RESTful API与单元测试
- SpringCloud SpringBoot mybatis 分布式微服务(四)Spring Boot开发Web应用
- SpringCloud SpringBoot mybatis 分布式微服务(二十一)整合 beatlsql
- SpringCloud SpringBoot mybatis 分布式微服务(二十二)构建restful API
- Spring Cloud Spring Boot mybatis分布式微服务云架构(五)构建RESTful API
- Spring Cloud云服务架构 - common-service 项目构建过程
- spring cloud + spring boot + springmvc+mybatis分布式微服务云架构
- Spring Cloud Spring Boot mybatis 企业分布式微服务云(五)服务消费(Feign)【Dalston版】
- Spring Cloud Spring Boot mybatis分布式微服务云架构(七)开发Web应用(1)
- 基于SpringBoot 2.0正式版的SpringCloud的微服务实战项目搭建