当前位置: 首页 > news >正文

gradle项目多模块中主模块加载子模块中的sqlmapper文件方法

gradle项目多模块中主模块加载子模块中的sqlmapper文件方法

gradle项目多模块中主模块加载子模块中的sqlmapper文件方法

1.子模块 build.gradle
sourceSets.main.resources {
srcDirs = ["src/main/resources", "src/main/java"] // 包含Java目录下的XML文件
includes = ["**/*.xml"] // 明确包含XML文件
}

2.主模块 build.gradle
compile project(":subModel:subModel-api")
compile project(":subModel:subModel-service")
implementation project(":subModel:subModel-api")
implementation project(":subModel:subModel-service")

3.application.properties
mybatis.mapper-locations=classpath*:mybatis/myProject/*.xml, classpath*:mybatis/**/*.xml

4.多数据源配置【关键】
@Bean(name = "scooterSqlSessionFactory")
public SqlSessionFactory sentinelSqlSessionFactory(@Qualifier("scooterDataSource") DataSource dataSource) throws Exception {
SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
bean.setDataSource(dataSource);
bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath*:mybatis/myProject/*.xml"));
return bean.getObject();
}


5.gradle clean build -x test --refresh-dependencies

gradle会编译失败: 使用根项目下的 gradlew
D:\git\tengxunyunNew\myProject>gradlew clean build -x test --refresh-dependencies


"classpath*:mybatis/myProject/*.xml"
"classpath:mybatis/myProject/*.xml" 区别~!

在加载SQL Mapper文件时,classpath:和classpath*:的主要区别体现在资源查找范围和加载行为上:
1. 查找范围差异
‌classpath:‌
仅从当前模块的类路径(如target/classes目录)中查找资源,且只返回第一个匹配到的资源文件。
例如配置classpath:mapper/*.xml时,若多个模块存在同名文件,只会加载第一个被扫描到的文件。‌*classpath:**‌
会递归扫描所有类路径(包括当前模块和依赖的JAR包),返回所有匹配的资源文件。
适用于需要聚合多模块资源的场景,如classpath*:mapper/**/*.xml会加载所有模块中匹配路径的XML文件。2. 性能影响
classpath*:需要遍历所有类路径,性能低于classpath:,尤其在依赖较多时差异明显。建议在明确需要跨模块加载时才使用classpath*:3. 典型应用场景
‌单一资源加载‌
使用classpath:,如指定唯一配置文件:@PropertySource("classpath:config.properties")。‌多模块资源聚合‌
使用classpath*:,例如MyBatis需加载分散在多个JAR中的Mapper文件:mybatis.mapper-locations=classpath*:mapper/*.xml。4. 注意事项
‌同名文件处理‌
classpath:可能因加载顺序导致预期外的文件被选中,而classpath*:会加载所有同名文件,需确保逻辑兼容性。
‌路径规范‌
避免在资源路径中使用通配符时混用两种前缀,可能引发不可预期的行为。
通过合理选择前缀可精准控制资源加载范围,避免因配置不当导致的文件遗漏或重复加载问题

 

http://www.sczhlp.com/news/106173/

相关文章:

  • MCP - 使用 fastmcp 编写 Client 调用 MCP Serverr - Streamable HTTP (四)
  • Figma EX 125.7.5 UI原型设计
  • 微信网站页面制作网址大全2345视频
  • 专题网站创意设计与实现智能硬件开发流程
  • 创网中国的网站广东网络seo推广公司
  • 租赁公司网站源码常州建网站公司
  • 帮助做APP的网站公司在线装修设计软件
  • 电子商务网站界面设计江苏公众科技网站建设
  • 福州网站设计哪里建站河南艾特 网站建设公司
  • 无忧网站建设哪家好网站嵌入播放器
  • 淘客怎么样做网站网易企业邮箱彻底删除的邮件还能恢复吗
  • 外贸网站建设的重要性c2c模式在我国开始于1999年的
  • 基于WebSocket的命令与控制工具WSC2详解
  • LocalDateTime节日和平日在时间占比计算方法
  • JSON字符串转换List对象列表 JSONArray toJavaList
  • 网站建设好还需要续费吗wordpress php.ini
  • 没有网站想做个链接页面怎么做解析域名网站
  • 地方宣传网站建设的必要性机关网站建设引导语
  • 网站建设朋友圈怎么写ui设计培训内容
  • 自己在本地建的网站 别人怎么访问教程凡客沙发官网
  • 嘉兴类网站系统总部网站上怎么做动画广告视频在线观看
  • 网站建设项目风险管理的主要内容电脑做会计从业题目用什么网站
  • 新发布一个网站公告怎么做专门做广东11选5的网站
  • 山东食品行业网站开发开发平台需要什么技术
  • vue3 使用 docx-preview 预览 Word文档
  • 数据库原理-第三章——SQL
  • 做网站的公司 北京北京网站建设价格
  • 建设网站要那些公众号开发 表格
  • 设计好看的网站工业设计网站设计
  • 郑州专业网站制作费用报价金蝶在线登录入口