Mybatis 的配置xml和properties放在jar包以外的一种方法

1.问题

开发时候,将xml和properties放resources,直接可以访问到,然而打包后这两个文件也一同被打包到jar包里面,如果发布后想修改就会比较麻烦,所以希望将xml配置文件和properties放在jar包以外来做,这样就可以动态来指定环境。

2.分析

我们查看sessionfactory的源码会发现,读取properties部分的代码是使用两种机制来做的。 一是:Resources.getResourceAsProperties(resource) 二是:Resources.getUrlAsProperties(url) 也就是可以使用URL的标准写法来做配置,比如xml的位置和mapper的xml的位置应该都可以这样来写。所以做一次尝试。 我们把用一个InputStream来读取mybatis的xml文件,作为输入,在这个xml中使用URL方式来定义数据的配置文件也就是properties,mapper也使用url方式来定义。

3.解决

我们将SqlSessionFactory的创建方法修改一下,变成类似如下的方式。 先从conf目录读取配置文件 File conf_file = new File(System.getProperty("user.dir")+"/conf/config.xml"); InputStream inputStream1 = new FileInputStream(conf_file); //2.获取SqlSessionFactory 分别使用不同的环境来进行连接配置 sessionFactory_mysql_sys = new SqlSessionFactoryBuilder().build(inputStream1,"mysql_sys"); 在将config.xml中的properties部分和mapper部分修改为使用url方式来加载。类似 <properties url="file:///Users/pcode/lutra_sems_J/0.SRC/conf/config.properties"/> <mapper url="file:///Users/pcode/lutra_sems_J/0.SRC/mapper/mysql_sys.xml"/> 就是要特别注意url中file://的写法就可以了。这样就可以将properties文件和mapper文件都定义在jar包以外了。 当然还可以使用更为负载的方法比如手工方法创建SqlSessionFactory,那样就解决的更为彻底,但是因为目前我的做法中还要引入一个spring来管理bean,改造显得稍稍麻烦了一些,这次就不介绍了。可以另起一篇来写一下。 更为彻底的解耦。

转载于:https://my.oschina.net/u/926065/blog/1832525

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值