當前位置:
首頁 > 知識 > Servlet+MyBatis項目轉Spring Cloud微服務,多數據配置修改建議

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

版權聲明:本文為博主原創文章,轉載請附上博文鏈接!

Servlet+MyBatis項目轉Spring Cloud微服務,多數據配置修改建議

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 程序員小新人學習 的精彩文章:

canvas實現漂亮的下雨效果
c井 用時間日期作為文件名

TAG:程序員小新人學習 |