Spring Boot Hibernate CRUD REST API 404错误排查求助
看起来你遇到了接口请求404的常见问题,结合你贴出的代码,我帮你梳理几个最可能的原因:
1. 检查Spring Boot主类的包扫描范围
Spring Boot默认只会扫描主启动类所在包及其子包下的组件(Controller、Service、Repository等)。假设你的主启动类在com.example.employeecrud,但你的EmployeController、EmployeServiceImplement等类在com.akki这类完全独立的包下,Spring就无法自动发现这些组件,导致Controller没有被注册到路由中,自然返回404。
解决方法:
- 把所有业务类移到主启动类的子包下,比如主类在
com.akki,Controller放在com.akki.controller,Service放在com.akki.service,DAO放在com.akki.dao。 - 或者在主启动类上手动添加
@ComponentScan指定扫描的包:
@SpringBootApplication @ComponentScan(basePackages = {"com.akki.controller", "com.akki.service", "com.akki.dao"}) public class YourApplication { public static void main(String[] args) { SpringApplication.run(YourApplication.class, args); } }
2. 确认请求路径是否完全匹配
你的EmployeController上标注了@RequestMapping("/api"),而get()方法上是@GetMapping("/employe"),所以完整的请求URL应该是:http://localhost:8080/api/employe
(如果你的项目修改了端口,要替换成对应的端口号)
请检查Postman里的请求地址:
- 是不是把
employe拼成了employee(多了一个e)? - 是不是漏写了
/api前缀? - 大小写是否正确?(虽然Spring默认不区分URL大小写,但最好严格匹配)
3. 检查Service和DAO的方法实现完整性
你贴出的EmployeServiceImplement只实现了get()方法,而EmployeService接口里还有get(int id)、save()、delete()三个方法没有实现。虽然这不会直接导致404,但如果编译器允许这种情况(比如未处理抽象方法),会导致Spring无法正常实例化Service类,进而Controller的依赖注入失败,可能引发其他异常。建议你补全所有接口方法的实现,哪怕暂时只是抛出UnsupportedOperationException:
@Service public class EmployeServiceImplement implements EmployeService { @Autowired private EmployeDAO employeDAO; @Transactional @Override public List<Employe> get() { return employeDAO.get(); } @Override @Transactional public Employe get(int id) { return employeDAO.get(id); } @Override @Transactional public void save(Employe employe) { employeDAO.save(employe); } @Override @Transactional public void delete(int id) { employeDAO.delete(id); } }
同样,EmployeDAOImplement也要补全其他三个方法的实现,比如get(int id)可以这样写:
@Override public Employe get(int id) { Session currentSession = entityManager.unwrap(Session.class); return currentSession.get(Employe.class, id); }
4. 验证Spring Boot应用是否正常启动
启动应用后,检查控制台日志,确认没有出现BeanCreationException、NoSuchBeanDefinitionException这类错误。如果有依赖注入失败的情况,Controller可能无法正常工作,也会间接导致请求无响应或者404。
先从上面前两点排查,这是404最常见的原因,应该能解决你的问题。
内容的提问来源于stack exchange,提问作者Akkië

