Spring Boot 未调用CommandLineRunner run()方法

u0sqgete  于 2023-03-23  发布在  Spring
关注(0)|答案(2)|浏览(199)

我已经尝试了这个平台上提供的所有答案,但都不起作用。我正在执行这个命令行运行程序,但run方法没有调用。
我感谢你的帮助。
谢谢。

我尝试了下面的解决方案,但得到了这个例外。
第一个:在Bootstrap类(这个类的main方法是SpringApplication.run(...,args))中,你可以在@SpringBootApplication annotation中添加属性scanBasePackages:
@SpringBootApplication(scanBasePackages = {“com.project.data.runner”})这将告诉Spring在com.project.data.runner包中查找组件。

fwzugrvs

fwzugrvs1#

您的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 annotation处添加属性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 Repositories,如果您的repositories不在Bootstrap类所在的包或子包下,则必须将@EnableJpaRepositories添加到@Configuration类并显式配置您的repositories所在的包。
你的bootstrap类看起来像这样:

@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);
    }
}
xu3bshqb

xu3bshqb2#

我遇到了同样的问题,解决方法是将@Component添加到类定义中。

相关问题