采用spring boot  开发了一个多模块项目,有多个模块中都有mapper配置文件。

采用如下的方式配置,制度去到了一个模块jar包中配置文件:

  @Bean(name = "sqlSessionFactory")
public SqlSessionFactory sqlSessionFactoryBean() {
SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
bean.setDataSource(dataSource);
bean.setTypeAliasesPackage("tk.mybatis.springboot.model");
MybatisInterceptor interceptor = new MybatisInterceptor();
bean.setPlugins(new Interceptor[]{interceptor}); //添加XML目录
ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
try {
//\com\tritrust\t\core\dict\sqlmap
//\com\tritrust\t\system\sqlmap
bean.setMapperLocations(resolver.getResources("classpath:com/tritrust/t/**/sqlmap/*.xml"));
return bean.getObject();
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException(e);
}
}

需要读取多个jar里面的配置需要修改配置路径为:

bean.setMapperLocations(resolver.getResources("classpath*:com/tritrust/t/**/sqlmap/*.xml"));
classpath*:就可以读取多个jar里面文件了。

查看spring core 中org.springframework.core.io.support.PathMatchingResourcePatternResolver类有如下代码:
    public Resource[] getResources(String locationPattern) throws IOException {
Assert.notNull(locationPattern, "Location pattern must not be null");
if (locationPattern.startsWith("classpath*:")) {
return this.getPathMatcher().isPattern(locationPattern.substring("classpath*:".length())) ? this.findPathMatchingResources(locationPattern) : this.findAllClassPathResources(locationPattern.substring("classpath*:".length()));
} else {
int prefixEnd = locationPattern.startsWith("war:") ? locationPattern.indexOf("*/") + 1 : locationPattern.indexOf(58) + 1;
return this.getPathMatcher().isPattern(locationPattern.substring(prefixEnd)) ? this.findPathMatchingResources(locationPattern) : new Resource[]{this.getResourceLoader().getResource(locationPattern)};
}
}
												

最新文章

  1. UITableView UITableViewCell
  2. 安卓手机与电脑无线传输文件(利用ftp服务)
  3. DLL文件无法删除怎么解决
  4. MySQL免安装版配置
  5. php用于URL的base64
  6. Linux下GPIO驱动(五) ----misc_register();
  7. 【ADO.NET】3、从TXT中导入数据到数据库
  8. PowerDesigner 的7种建模文件
  9. web.config详解
  10. WEB服务器如何选择 Apache or Nginx?
  11. gcc创建静态库和共享库
  12. Odoo:全球第一免费开源ERP库龄表的简单实现方法(无需二开)
  13. 【原创】大叔问题定位分享(1)HBase RegionServer频繁挂掉
  14. TX-LCN分布式事务Demo实战
  15. vue路由5:命名视图
  16. android设备兼容性
  17. electron安装到第一个实例
  18. 关于CAE的那点儿破事儿【二】
  19. Android Fragment与Activity通讯详解
  20. MySQL的Join使用

热门文章

  1. Feign的理解
  2. 一种电平转换的方法,使用CPLD
  3. ChibiOS/RT移植到STM32F407
  4. 解决服务器openssh漏洞
  5. 使用Wireshark对手机抓包设置说明
  6. 我花了2个月时间,整理了100篇Linux技术精华,技术人必看
  7. burp插件debug
  8. 命令检测站点是否使用CDN加速
  9. Java eclipse等常见问题汇总
  10. jquery显示隐藏密码跟显示密码