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

【已解决】在Spring Boot工程中,若未识别到resources/db文件夹下的SQL文件

在Spring Boot工程中,若未识别到resources/db文件夹下的SQL文件,通常与资源路径配置、构建工具设置或代码加载方式有关。以下是逐步排查和解决方案:

​1. 确认SQL文件存放路径​

Spring Boot默认从类路径(classpath:)加载资源,标准资源目录为src/main/resources。确保SQL文件存放于:

src/main/resources/db/

编译后,文件应被复制到输出目录的classes/db/下(如Maven的target/classes/db/或Gradle的build/classes/java/main/db/)。

​2. 检查构建工具资源配置​

构建工具(Maven/Gradle)可能因自定义配置排除了db目录,导致文件未被打包。

​Maven项目​

检查pom.xml中的<resources>配置,确保未排除db目录:

<build><resources><resource><directory>src/main/resources</directory><!-- 确保没有排除db目录 --><!-- <excludes><exclude>db/**</exclude></excludes> --> </resource></resources>
</build>
​Gradle项目​

检查build.gradle中的sourceSets配置,确保包含db目录:

sourceSets {main {resources {srcDirs = ['src/main/resources']// 确保包含db目录(默认已包含,无需额外配置)}}
}

​3. 显式配置SQL文件路径(关键)​

若通过Spring Boot自动初始化数据库(如schema.sql/data.sql),需在application.propertiesapplication.yml中​​显式指定路径​​(默认仅加载根路径的schema.sql/data.sql)。

示例配置:
# application.properties
# 加载db目录下的schema.sql(建表语句)
spring.datasource.schema=classpath:db/schema.sql
# 加载db目录下的data.sql(插入数据)
spring.datasource.data=classpath:db/data.sql
# application.yml
spring:datasource:schema: classpath:db/schema.sqldata: classpath:db/data.sql

​4. 其他场景:手动加载SQL文件​

若在代码中手动加载(如通过JdbcTemplate@Sql注解),需使用正确的类路径前缀。

示例1:通过@Sql注解(测试场景)
@SpringBootTest
@Sql(scripts = "classpath:db/init-test.sql") // 指向db目录下的init-test.sql
public class MyServiceTest {// ...
}
示例2:通过JdbcTemplate执行
@Autowired
private JdbcTemplate jdbcTemplate;public void init() {// 读取db目录下的script.sqlResource resource = new ClassPathResource("db/script.sql");String sql = new String(resource.getInputStream().readAllBytes());jdbcTemplate.execute(sql);
}

​5. 验证文件是否被正确打包​

构建项目后,检查输出目录(如target/classes/db/)是否存在SQL文件:

  • Maven:执行mvn clean package,查看target/classes/db/

  • Gradle:执行gradle clean build,查看build/classes/java/main/db/

​6. 其他注意事项​

  • ​数据库方言与初始化顺序​​:若使用Hibernate,确保spring.jpa.hibernate.ddl-auto=none(避免Hibernate自动生成DDL覆盖schema.sql)。

  • ​外部配置覆盖​​:若通过--spring.config.location指定外部配置,需确认配置中包含spring.datasource.schema路径。

  • ​IDE缓存问题​​:重启IDE或清理缓存(如IntelliJ的File > Invalidate Caches)。

​总结​

核心步骤:

  1. 确认SQL文件在src/main/resources/db/下;

  2. 检查构建工具未排除该目录;

  3. application.properties中显式配置spring.datasource.schema/data路径;

  4. 手动加载时使用classpath:db/xxx.sql前缀。

http://www.lryc.cn/news/621691.html

相关文章:

  • 10--C++模板参数与特化详解
  • Linux Namespace隔离实战:dd/mkfs/mount/unshare构建终极沙箱
  • 基于CodeBuddy的2D游戏开发实践:炫酷大便超人核心机制解析
  • 云手机存储和本地存储的区别
  • Ant-Design AUpload如何显示缩略图;自定义哪些类型的数据可以使用img预览
  • 用3D打印重新定义骑行-中科米堆CASAIM自行车座椅个性化设计
  • Spring Ai 如何配置以及如何搭建
  • Cursor CLI 技术解析:免费调用 GPT-5 的命令行方案
  • Flink的状态管理
  • 项目篇------------网页五子棋(知识预备)
  • GPT 解码策略全解析:从 Beam Search 到 Top-p 采样
  • spring ai-openai-vl模型应用qwen-vl\gpt-文字识别-java
  • 自学大语言模型之Transformer的Tokenizer
  • 用GPT解释“GPT-5”是什么,有什么优势
  • Spring IOC容器在Web环境中的启动奥秘:深入源码解析
  • Grafana 与 InfluxDB 可视化深度集成(一)
  • Al大模型-本地私有化部署大模型-大模型微调
  • 算法学习远程访问:借助 cpolar 内网穿透服务使用 Hello-Algo
  • 以下是对智能电梯控制系统功能及系统云端平台设计要点的详细分析,结合用户提供的梯控系统网络架构设计和系统软硬件组成,分点论述并补充关键要点:
  • JavaScript 核心基础:类型检测、DOM 操作与事件处理
  • C++——分布式
  • 力扣 —— 二分查找
  • 【JAVA 基础入门】运算符详细介绍
  • 【软件设计模式】工厂方法与抽象工厂
  • 【办公类110-01】20250813 园园通新生分班(python+uibot)
  • 微信小程序 拖拽签章
  • GitHub 热榜项目 - 日榜(2025-08-15)
  • Redis核心架构
  • Java 大视界 -- Java 大数据在智能教育虚拟学习环境构建与学习体验增强中的应用(399)
  • electron之win/mac通知免打扰