You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

排除DataSourceAutoConfiguration后Spring Boot JPA Repository Bean缺失求助

问题解决步骤

1. 恢复数据源自动配置

你之前排除DataSourceAutoConfiguration.class的操作会完全禁用Spring Boot的数据源、JPA自动配置逻辑,导致@Repository接口无法被实例化为Bean。首先移除启动类中的exclude配置:

@SpringBootApplication
public class AtlokalUserMgmtApplication {
    public static void main(String[] args) {
        SpringApplication.run(AtlokalUserMgmtApplication.class, args);
    }
}

2. 修复SQL文件加载错误

最初的Unable to load resources from db/scripts/*.sql错误是资源路径配置或文件位置问题,按以下方式排查修正:

  • 确认文件位置:确保db/scripts目录位于src/main/resources下,Spring默认从classpath(即resources目录)加载初始化脚本
  • 修正配置路径:在application.properties中明确指定classpath前缀:
    spring.sql.init.data-locations=classpath:db/scripts/*.sql
    
  • 检查文件有效性:确认db/scripts下存在.sql文件,文件名无拼写错误

3. 调整初始化顺序(可选)

因为你设置了spring.jpa.hibernate.ddl-auto=none(不自动建表),如果SQL脚本是插入数据到已存在的表中,建议将数据源初始化延迟到JPA初始化完成后,避免因表不存在导致的插入失败:

spring.jpa.defer-datasource-initialization=true

4. 确保Repository被扫描

如果UserRepository所在包不在AtlokalUserMgmtApplication类所在包的子包下,需要显式指定Repository扫描路径:

@SpringBootApplication
@EnableJpaRepositories(basePackages = "com.atlokal.user.mgmt.user.dao")
public class AtlokalUserMgmtApplication {
    public static void main(String[] args) {
        SpringApplication.run(AtlokalUserMgmtApplication.class, args);
    }
}

最终修正后的application.properties

spring.jpa.hibernate.ddl-auto=none
spring.sql.init.mode=always
spring.sql.init.data-locations=classpath:db/scripts/*.sql
spring.jpa.defer-datasource-initialization=true

内容的提问来源于stack exchange,提问作者Thirumalesu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 13:21:09