Spring:将接口传递给控制器​​构造函数时出现问题

Spring: Issue with passing Interface to controller constructor

以下是我面临的问题。

启动开发工具时出现以下错误

tacos.web.DesignTacoController 中构造函数的参数 0 需要找不到类型 'tacos.data.IngredientRepository' 的 bean。

操作:

考虑在您的配置中定义类型为 'tacos.data.IngredientRepository' 的 bean。

请帮忙。

IngredientRepository.java

    package tacos.data;

    import org.springframework.data.repository.CrudRepository;
    import org.springframework.stereotype.Repository;
    import tacos.Ingredient;

    public interface IngredientRepository extends CrudRepository<Ingredient, String> {
    }

DesignTacoController.java

    package tacos.web;

    import lombok.extern.slf4j.Slf4j;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Controller;
    import org.springframework.ui.Model;
    import org.springframework.validation.Errors;
    import org.springframework.web.bind.annotation.*;

    import java.util.List;
    import java.util.stream.Collectors;
    import tacos.Ingredient;
    import tacos.Ingredient.Type;
    import tacos.Order;
    import tacos.Taco;
    import tacos.data.IngredientRepository;
    import tacos.data.TacoRepository;
    import javax.validation.Valid;

    @Slf4j
    @Controller
    @RequestMapping("/design")
    @SessionAttributes("order")
    public class DesignTacoController {

    private IngredientRepository ingredientRepo;
    private TacoRepository tacoRepo;

    @Autowired
    public DesignTacoController(IngredientRepository ingredientRepo, TacoRepository tacoRepo) {
        this.ingredientRepo = ingredientRepo;
        this.tacoRepo = tacoRepo;
    }

    @ModelAttribute(name = "order")
    public Order order() {
        return new Order();
    }
    @ModelAttribute(name = "taco")
    public Taco taco() {
        return new Taco();
    }
    @ModelAttribute
    public void addIngredientsToModel(Model model) {
        List<Ingredient> ingredients = ingredientRepo.findAll();
        Type[] types = Ingredient.Type.values();
        for (Type type : types) {
            model.addAttribute(type.toString().toLowerCase(), filterByType(ingredients, type));
        }
    }
    @GetMapping
    public String showDesignForm() {
        return "design";
    }
    @PostMapping
    public String processTaco(@Valid Taco taco, Errors errors, @ModelAttribute Order order) {
        if (errors.hasErrors())
            return "design";
        Taco saved = tacoRepo.save(taco);
        order.addTaco(saved);
        log.info("Processing taco: {}", taco);
        return "redirect:/orders/current";
    }

    private List<Ingredient> filterByType(List<Ingredient> ingredients, Type type) {

        return ingredients.stream()
                .filter(x -> x.getType().equals(type))
                .collect(Collectors.toList());
    }
}

主要class

    package tacos;

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

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

我在pom.xml

中添加了一个依赖项
    <dependency>
       <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-starter-data-jdbc</artifactId>
    </dependency>

应用启动了