使用命令行运行器在Spring Boot应用程序内部创建Bean

时间:2018-11-06 11:13:19

标签: spring spring-data

@SpringBootApplication 公共类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>{ 
}

1 个答案:

答案 0 :(得分:0)

扫描的组件必须与带有注释的类@SpringBootApplication位于同一包中,或其子包中。我只能假设它是ReactiveCouchbaseExample1Application.class

也许您的仓库位于不同的软件包中,或者您没有使用@SpringBootApplication@ComponentScan启用组件扫描。