描述:
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);
}
}
首先从
ComponentScan
中删除 QuizMaker1Application
注释。
Spring Boot应用程序不需要在根目录中查找bean。
然后从
private QuestionDao questionDao;
中移除 QuizMaker1Application
。那里没有使用它,所以不需要。
这应该可以启动并找到 beans 和存储库。
如果不起作用。尝试将
@EnableJpaRepositories("com.example.dao")
添加到 QuizMaker1Application
。