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方式来加载。类似
就是要特别注意url中file://的写法就可以了。这样就可以将properties文件和mapper文件都定义在jar包以外了。
当然还可以使用更为负载的方法比如手工方法创建SqlSessionFactory,那样就解决的更为彻底,但是因为目前我的做法中还要引入一个spring来管理bean,改造显得稍稍麻烦了一些,这次就不介绍了。可以另起一篇来写一下。
更为彻底的解耦。
Mybatis 的配置xml和properties放在jar包以外的一种方法的更多相关文章
- jar包生制作几种方法,jar包导出三种方法:eclipse导出、jar命令、FatJar插件
Eclipse将引用了第三方jar包的Java项目打包成jar文件的两种方法 方案一:用Eclipse自带的Export功能 步骤1:准备主清单文件 “MANIFEST.MF”, 由于是打包引用了第三 ...
- IDEA第三方jar包引入的三种方法(专治IDEA2020.1.1的坑)
一: 二: 三:
- (转)如何在maven的pom.xml中添加本地jar包
1 maven本地仓库认识 maven本地仓库中的jar目录一般分为三层:图中的1 2 3分别如下所示: 1 groupId 2 artifactId 3 version 4 jar包的依赖 如果要将 ...
- (转)如何在maven的pom.xml中添加本地jar包
转载自: https://www.cnblogs.com/lixuwu/p/5855031.html 1 maven本地仓库认识 maven本地仓库中的jar目录一般分为三层:图中的1 2 3分别如下 ...
- eclipse中基于maven构建的web项目pom.xml中指定的jar包无法发布到tomcat中
eclipse运行maven web项目报错: 信息: Starting Servlet Engine: Apache Tomcat/7.0.57 一月 07, 2015 11:50:44 下午 or ...
- 只要项目是maven构建的,pom.xml中依赖的jar包全都默认去你电脑本地仓库去找
只要项目是maven构建的,pom.xml中依赖的jar包全都默认去你电脑本地仓库去找
- Android Studio导入第三方jar包或依赖工程的方法
Android Studio导入第三方jar包或依赖工程的方法 一 导入jar包的方法 1.打开自己的工程,将需要导入的jar包copy到libs文件夹下 2.在导入的jar包处单击菜单 Add ...
- Maven中解决jar包冲突的三种方式
首先我们在idea中创建一个maven工程,我们只关注pom.xml以及External Libraries中导入的jar包 导入spring-beans.jar <dependency> ...
- 读取xml文件转成List<T>对象的两种方法(附源码)
读取xml文件转成List<T>对象的两种方法(附源码) 读取xml文件,是项目中经常要用到的,所以就总结一下,最近项目中用到的读取xml文件并且转成List<T>对象的方法, ...
随机推荐
- 使用 ipmitool 实现远程管理Dell 系列服务器
IBM 文档: http://www.ibm.com/developerworks/cn/linux/l-ipmi/index.html ipmi命令收集: http://hi.baidu ...
- node.js second day
create global link 使用全局模式安装的包不能直接通过require使用,但是nmp提供了一个 nmp link ,这个可以打破限制 $ nmp link [express] ./no ...
- Python 脚本利用adb 进行手机控制
相关参考:https://www.cnblogs.com/bravesnail/articles/5850335.html 一. adb 相关命令: 1. 关闭adb服务:adb kill-serv ...
- VS 快捷键设置
工具 --> 选项 --> 环境 --> 键盘
- Weblogic 错误 <BEA-000403> <BEA-000438>解决办法
控制台提示如下错误: <Error> <Socket> <BEA-000438> <Unable to load performance pack. Us ...
- 使用Flexbox:新旧语法混用实现最佳浏览器兼容
Flexbox非常的棒,肯定是未来布局的一种主流.在过去的几年这之中,语法改变了不少,这里有一篇“旧”和“新”新的语法区别教程(如果你对英文不太感兴趣,可以移步阅读中文版本).但是,如果我们把Flex ...
- maven封装jar包遇到的问题
使用eclipse编译后可以生成jar包,使用mvn clean package指令打包报错,错误如下:No compiler is provided in this environment. Per ...
- POJ 2593
#include <iostream> #include <stdio.h> using namespace std; int cmp ( const void *a , co ...
- vue教程3-06 vue路由嵌套(多层路由),路由其他信息
多层嵌套: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF ...
- 使用GitHub Pages + Jekyll 建立博客
https://pages.github.com/ http://jekyllbootstrap.com/usage/jekyll-quick-start.html Jekyll是一个静态网站生成器, ...