我有一个关于Sping Boot 的项目,我在对我的控制器执行简单的Get请求时遇到了麻烦。
这是我的控制器类的样子。
package com.team4.controllers;
@RestController
@RequestMapping("/king")
public class KingController {
@Autowired
private KingRepository kingRepo;
@GetMapping("/all")
public List<King> list() {
return kingRepo.findAll();
}
@GetMapping("/{id}")
public King get(@PathVariable Long id) {
return kingRepo.getReferenceById(id);
}
@PostMapping("/add")
public King create(@RequestBody final King king) {
return kingRepo.saveAndFlush(king);
}
@PutMapping("/update")
public King update(@RequestBody final King king) {
return kingRepo.saveAndFlush(king);
}
@DeleteMapping("/delete/{id}")
public void delete(@PathVariable Long id) {
kingRepo.deleteById(id);
}
}
然而, Postman http://localhost:8080/king/all上的get请求给了我“时间戳”:“2023年3月7日T01:17:43.041+00:00”,“状态”:404,错误提示:“未找到”,“消息”:“无可用消息”,“路径”:“/国王/所有”
这是我的主类的样子
package com.team4;
@SpringBootApplication
@EntityScan( basePackages = {"com.team4.model.*"} )
@EnableJpaRepositories("com.team4.model.*")
@ComponentScan( basePackages = { "com.team4.model.*", "com.team4.controllers.*" } )
public class BoardGameProjectApplication {
public static void main(String[] args) {
SpringApplication.run(BoardGameProjectApplication.class, args);
}
}
如果我把一个方法放在这个类里, Postman 就可以访问它。我很困惑为什么它不为我的控制器做这件事。我该怎么办?
这两个类之间的唯一区别是它们所在的包。
1条答案
按热度按时间flvlnr441#
Spring找不到您的控制器,因为您强制它在com.team4.controllers下的子包中搜索,而不是在com.team4.controllers本身中搜索。
到
也许更好的是