Spring boot + mybatis 只读取到一个jar包中的mapper配置文件
2024-08-27 08:29:34
采用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)};
}
}
最新文章
- UITableView UITableViewCell
- 安卓手机与电脑无线传输文件(利用ftp服务)
- DLL文件无法删除怎么解决
- MySQL免安装版配置
- php用于URL的base64
- Linux下GPIO驱动(五) ----misc_register();
- 【ADO.NET】3、从TXT中导入数据到数据库
- PowerDesigner 的7种建模文件
- web.config详解
- WEB服务器如何选择 Apache or Nginx?
- gcc创建静态库和共享库
- Odoo:全球第一免费开源ERP库龄表的简单实现方法(无需二开)
- 【原创】大叔问题定位分享(1)HBase RegionServer频繁挂掉
- TX-LCN分布式事务Demo实战
- vue路由5:命名视图
- android设备兼容性
- electron安装到第一个实例
- 关于CAE的那点儿破事儿【二】
- Android Fragment与Activity通讯详解
- MySQL的Join使用