使用命令行运行器在Spring启动应用程序中创建Bean
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用命令行运行器在Spring启动应用程序中创建Bean相关的知识,希望对你有一定的参考价值。
@SpringBootApplication public class ReactiveCouchbaseExample1Application {
@Bean
CommandLineRunner employees(ApplicationContext context) {
EmployeeRepository repository = context.getBean(EmployeeRepository.class);
return args -> {
repository
.deleteAll()
.subscribe(null,null,()->{
Stream.of(new Employees(UUID.randomUUID().toString(), "Nikhil", 23, 3000L),
new Employees(UUID.randomUUID().toString(), "Shubham", 23, 3000L),
new Employees(UUID.randomUUID().toString(), "Anshul", 23, 3000L))
.forEach(employee->{
repository.save(employee)
.subscribe(System.out::println);
});
});
};
}
public static void main(String[] args) {
SpringApplication.run(ReactiveCouchbaseExample1Application.class, args);
}
我希望在我的应用程序上下文加载后运行这条逻辑但是当我启动我的应用程序时它会显示此错误。
Method employees in com.reactive.reactivecouchbaseexample1.ReactiveCouchbaseExample1Application required a bean of type 'com.reactive.repository.EmployeeRepository' that could not be found.
有人能告诉我如何在CommandLineRunner中创建一个存储库bean。我也搜索了它,但无法找到任何答案。
这是我的存储库
@Repository
public interface EmployeeRepository extends
ReactiveCouchbaseRepository<Employees, String>{
}
答案
扫描的组件必须与@SpringBootApplication
带注释的类或其子包在同一个包中。我只能假设它是ReactiveCouchbaseExample1Application.class
。
也许您的仓库在不同的包装中,或者您没有使用@SpringBootApplication
或@ComponentScan
启用组件扫描。
以上是关于使用命令行运行器在Spring启动应用程序中创建Bean的主要内容,如果未能解决你的问题,请参考以下文章
使用 JPA 和 mysql 启动在 Spring Boot 中创建的应用程序时出错
使用 Spring Command Line Runner 初始化数据
如何在 Spring Boot 中创建不同的 ThreadPoolTaskExecutor? [复制]