com.example.service.QuestionService 中构造函数的参数 0 需要类型为“com.example.Dao.QuestionDao”的 bean,但无法找到

问题描述 投票:0回答:1

描述:

com.example.service.QuestionService 中构造函数的参数 0 需要类型为“com.example.Dao.QuestionDao”的 bean,但无法找到。

行动:

考虑在配置中定义“com.example.Dao.QuestionDao”类型的 bean。

我过去两天都无法解决这个问题.......如果有人知道请帮助我......

`控制器:

@RestController
@RequestMapping("question")
public class QuestionController<Question> {

    private QuestionSerice questionService;
    public QuestionController (QuestionService questionService)
    { this.questionService = questionService;
    }
    // ------Read Operation----
    @GetMapping("allQuestions")

        public List<com.example.model.Question> getAllQuestions () {
        return questionService.getAllQuestions();
    }
    @GetMapping("category/{category}")
    public List<com.example.model.Question> getQuestionsByCategory (@PathVariable String category) {
    return questionService.getQuestionsByCategory( category);
    }
    //------Create Operation---
    @PostMapping("create")
    public String createQuestion (@RequestBody Question question) {
    return questionService.createQuestion ((com.example.model.Question) question);
    }
}

问道:

@Repository
public interface QuestionDao extends JpaRepository<Question, Integer>{
List<Question> findByCategory (String category);
}

服务:

@Service
public class QuestionService {

    
    private QuestionDao questionDao;
    

    public QuestionService(QuestionDao questionDao) {
        this.questionDao = questionDao;
    }


    public List<Question> getAllQuestions() {
        return questionDao.findAll();
        
    }

    public String createQuestion(Question question) {
         questionDao.save(question) ;
         return "Sucess";
    }

    public List<Question> getQuestionsByCategory(String category) {
        
        return questionDao.findByCategory(category);
    }
    
    
}

道: @存储库 公共接口 QuestionDao 扩展 JpaRepository{

List<Question> findByCategory(String category);

} 型号:

@Data
@Entity
@Table(name = "question")
public class Question {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer id;

    @Column(name = "questionTitle")
    private String questionTitle;

    @Column(name = "option1")
    private String option1;

    @Column(name = "option2")
    private String option2;

    @Column(name = "option3")
    private String option3;

    @Column(name = "option4")
    private String option4;

    @Column(name = "rightAnswer")
    private String rightAnswer;

    @Column(name = "difficultylevel")
    private String difficultylevel;

    @Column(name = "category")
    private String category;
}

主要:

@SpringBootApplication
@ComponentScan(basePackages={"com.example.controller","com.example.demo","com.example.Dao","com.example.model","com.example.service"})
public class QuizMaker1Application {

    private QuestionDao questionDao;
    public static void main(String[] args) {
        SpringApplication.run(QuizMaker1Application.class, args);
    }
    

   
}
java spring-boot spring-restcontroller
1个回答
0
投票

首先从

ComponentScan
中删除
QuizMaker1Application
注释。 Spring Boot应用程序不需要在根目录中查找bean。

然后从

private QuestionDao questionDao;
中移除
QuizMaker1Application
。那里没有使用它,所以不需要。

这应该可以启动并找到 beans 和存储库。

如果不起作用。尝试将

@EnableJpaRepositories("com.example.dao")
添加到
QuizMaker1Application

© www.soinside.com 2019 - 2024. All rights reserved.