Параметр 0 конструктора в Thomas.ChapterController требовал компонента типа ‘Thomas.ChapterRepository’, который не удалось найти

#java #spring #spring-boot

#java #spring #весенняя загрузка

Вопрос:

Я новичок в spring boot и не могу заставить работать пример из моей книги spring boot. Вот код

Описание:

Параметр 0 конструктора в Thomas.ChapterController требовал компонента >типа ‘Thomas.ChapterRepository’, который не удалось найти.

Экшен:

Рассмотрите возможность определения компонента типа ‘Thomas.ChapterRepository’ в вашей конфигурации.

Chapter.java

 package Thomas;
import lombok.Data;

import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;

@Data
@Document
public class Chapter {

    @Id /*tells mongodb that this will be the primary key for Mongo Document */
    private String Id;
    private String name;

    public Chapter(String name) {
        this.name = name;
    }
}
  

ChapterRepository.java

 package Thomas;

import org.springframework.data.repository.reactive.ReactiveCrudRepository;

public interface ChapterRepository extends ReactiveCrudRepository<Chapter, String> {
}
  

LoadDatabase.Java

 package Thomas;

import org.springframework.boot.CommandLineRunner;
import org.springframework.context.annotation.Bean;
import reactor.core.publisher.Flux;
import org.springframework.context.annotation.Configuration;

@Configuration /* Marks this class as a source of beans */
public class LoadDatabase {

    @Bean /* Indicates that the return value of init is a Spring Bean */
    CommandLineRunner init(ChapterRepository repository) {
        return args -> {
            Flux.just (
                    new Chapter("Quick Start With Java"),
                    new Chapter("Reactive Web With Spring Boot"),
                    new Chapter("...and More!"))
                    .flatMap(repository::save)
                    .subscribe(System.out::println);

        };
    }
}
  

ChapterController.java

 package Thomas;

import reactor.core.publisher.Flux;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class ChapterController {

    private final ChapterRepository repository;

    public ChapterController(ChapterRepository repository)
    {
        this.repository = repository;
    }

    @GetMapping("/chapters")
    public Flux<Chapter> listing() {
        return repository.findAll();
    }
}
  

ThomasSpringApplication.java

 package Thomas;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class ThomasSpringApplication {

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

Комментарии:

1. добавить аннотацию репозитория к классу ReactiveCrudRepository , после чего он будет внедрен и запустится правильно

Ответ №1:

Понял, что я подключал неправильные зависимости в моем pom.xml