Java 构造函数的参数0需要一个找不到的bean

Java 构造函数的参数0需要一个找不到的bean,java,spring,spring-boot,spring-webflux,Java,Spring,Spring Boot,Spring Webflux,我不确定我的代码出了什么问题。我在努力学习SpringBootWebFlux。但我无法运行该应用程序,因为我得到以下错误 “com.thomsoncodes.todo.controller.ToDoController中构造函数的参数0需要找不到“com.thomsoncodes.todo.repository.ToDoRespository”类型的bean。” 累了@自动连线,但我仍然有相同的错误 这是我的密码 格雷德尔先生 plugins { id 'org.springframewor

我不确定我的代码出了什么问题。我在努力学习SpringBootWebFlux。但我无法运行该应用程序,因为我得到以下错误

“com.thomsoncodes.todo.controller.ToDoController中构造函数的参数0需要找不到“com.thomsoncodes.todo.repository.ToDoRespository”类型的bean。”

累了@自动连线,但我仍然有相同的错误

这是我的密码

格雷德尔先生

plugins {
  id 'org.springframework.boot' version '2.1.3.RELEASE'
  id 'java'
}

apply plugin: 'io.spring.dependency-management'

group = 'com.thomsoncodes.todo'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '1.8'

repositories {
  mavenCentral()
}

dependencies {
   implementation 'org.springframework.boot:spring-boot-starter-webflux'
   compileOnly 'org.projectlombok:lombok'
   testImplementation 'org.springframework.boot:spring-boot-starter-test'
   testImplementation 'io.projectreactor:reactor-test'
}
应用程序类

package com.thomsoncodes.todo;

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

@SpringBootApplication
public class SpringBootTodoWebfluxApplication {

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

}
控制器类

package com.thomsoncodes.todo.controller;

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

import com.thomsoncodes.todo.domain.ToDo;
import com.thomsoncodes.todo.repository.ToDoRespository;

import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;

@RestController
public class ToDoController {

   private ToDoRespository repository;

   public ToDoController(ToDoRespository repository) {
    this.repository = repository;
   }

   @GetMapping("/rodo/{id}")
   public Mono<ToDo> getTodo(@PathVariable String id) {
      return this.repository.findById(id);
   }

   @GetMapping("/todo")
   public Flux<ToDo> getToDos() {
      return this.repository.findAll();
   }
}
存储库类

package com.thomsoncodes.todo.repository;

import java.util.Arrays; 
import com.thomsoncodes.todo.domain.ToDo;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;

public class ToDoRespository {

private Flux<ToDo> toDoFlux = Flux.fromIterable(Arrays.asList(
        new ToDo("Do Homework"),
        new ToDo("Workout in the morning", true),
        new ToDo("Make dinner tonight"),
        new ToDo("Clean the studio", true),
        new ToDo("Learn spring boot", true)));

  public Mono<ToDo> findById(String id) {
    return Mono.from(
            toDoFlux.filter( todo -> todo.getId().equals(id)));
  }

  public Flux<ToDo> findAll() {
     return toDoFlux;
  }


}
package com.thomsoncodes.todo.repository;
导入java.util.array;
导入com.thomsoncodes.todo.domain.todo;
导入reactor.core.publisher.Flux;
导入reactor.core.publisher.Mono;
公共类ToDoRespository{
私有流量toDoFlux=Flux.fromIterable(Arrays.asList(
新待办事项(“做作业”),
新ToDo(“早上锻炼”,没错),
新ToDo(“今晚做晚餐”),
新的ToDo(“清理工作室”,没错),
新的ToDo(“学习弹簧靴”,真的));
公共Mono findById(字符串id){
从单声道返回(
过滤器(todo->todo.getId().equals(id));
}
公共流量findAll(){
返回toDoFlux;
}
}

ToDoRepository未标记为@Component。

ToDoRepository未标记为@Component。

您需要做一些更改

  • 使用
    @Repository
    @Component
  • 在控制器类(可选)中使用
    @Autowired
    注释
    ToDoRepository

  • 你需要做一些改变

  • 使用
    @Repository
    @Component
  • 在控制器类(可选)中使用
    @Autowired
    注释
    ToDoRepository
  • package com.thomsoncodes.todo.repository;
    
    import java.util.Arrays; 
    import com.thomsoncodes.todo.domain.ToDo;
    import reactor.core.publisher.Flux;
    import reactor.core.publisher.Mono;
    
    public class ToDoRespository {
    
    private Flux<ToDo> toDoFlux = Flux.fromIterable(Arrays.asList(
            new ToDo("Do Homework"),
            new ToDo("Workout in the morning", true),
            new ToDo("Make dinner tonight"),
            new ToDo("Clean the studio", true),
            new ToDo("Learn spring boot", true)));
    
      public Mono<ToDo> findById(String id) {
        return Mono.from(
                toDoFlux.filter( todo -> todo.getId().equals(id)));
      }
    
      public Flux<ToDo> findAll() {
         return toDoFlux;
      }
    
    
    }