Spring Boot集成Derby开发Rest API 访问/welcome接口返回404错误
排查解决步骤
- 确认服务启动端口是否正确
Spring Boot默认启动端口为8080,若未在application.properties/application.yml中配置server.port=8888,实际服务端口为8080,对应访问地址应为http://localhost:8080/welcome。可查看启动日志中是否有Jetty started on port 8888类的输出,确认实际监听端口。 - 检查Security权限拦截配置
项目引入了spring-boot-starter-security依赖,默认所有接口都需要登录认证,仅登录页可匿名访问。可先临时禁用Security验证逻辑,在启动类上添加注解@EnableAutoConfiguration(exclude = {org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration.class}),重启后再次访问/welcome,如果可以正常返回则说明是Security拦截导致,后续按需配置Security规则放行/welcome路径即可。 - 检查是否配置了上下文根路径
若配置文件中存在server.servlet.context-path配置(比如值为/api),则实际访问路径需要加上前缀,对应为http://localhost:8888/api/welcome,否则会返回404。 - 排查容器依赖冲突
spring-boot-starter-web默认内置Tomcat容器,项目又额外引入了spring-boot-starter-jetty,两个容器冲突会导致请求处理异常。修改build.gradle中web依赖配置,排除内置Tomcat:implementation ('org.springframework.boot:spring-boot-starter-web') { exclude group: 'org.springframework.boot', module: 'spring-boot-starter-tomcat' } - 确认Controller是否被正常扫描注册
启动类和Controller同属com.example.demosb包,正常情况下@SpringBootApplication注解可以自动扫描到该路径下的组件,若未扫描到可手动在启动类上添加@ComponentScan(basePackages = "com.example.demosb")强制指定扫描路径。也可以查看启动日志中是否有Mapped "/welcome" to com.example.demosb.demoSbController.welcome()类的输出,确认接口是否被正常注册。 - 检查代码中转义字符问题
你贴出的代码中@GetMapping("/welcome")是HTML转义后的写法,确认实际代码中注解为@GetMapping("/welcome"),无多余转义字符导致路径配置错误。
内容的提问来源于stack exchange,提问作者shreeramaute
相关产品推荐
相关产品推荐

