好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

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

一、项目需求

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

二、存在的问题

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

三、调整建议

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

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

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

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 方法

}

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

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

/**

  * 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微服务,多数据源配置修改建议的详细内容...

  阅读:19次