您的 Bootstrap 类位于包 com.project.demo.data
你的命令行运行器在包com.project.data.runner
Spring 会扫描com.project.demo.data 的子包中的组件,也就是com.project.demo.data.* 中的组件,这就是你的命令行运行器永远不会运行的原因。 Spring从未找到他。
你有一些选择,但我会说两个:
1st:在您的Bootstrap类(具有main方法和SpringApplication.run(..., args)的类),您可以在@SpringBootApplication注解处添加属性scanBasePackages:
@SpringBootApplication(scanBasePackages = {"com.project.data.runner"})
这将告诉 Spring 在 com.project.data.runner 包中查找组件。
或
2nd:将命令行运行器从 com.project.data.runner 移动到 com.project.demo.data.runner(或 com.project.demo.data 下的类似内容)
更新
由于我们已经解决了聊天中的问题,我会用解决方案更新答案。
由于您使用的是 Spring Data JPA 存储库,如果您的存储库不在 Bootstrap 类所在的包或子包下,则必须将 @EnableJpaRepositories 添加到 @Configuration 类并显式配置哪个包您的存储库是。
您的引导类将如下所示:
@SpringBootApplication(scanBasePackages = { "com.project.data.runner"})
@Configuration
@EntityScan("com.project.data.entity")
@EnableJpaRepositories(basePackages = { "com.project.data.repository" })
public class DataJpaApplication {
public static void main(String[] args) {
SpringApplication.run(DataJpaApplication.class, args);
}
}