【问题标题】:Why isn't my spring boot @RequestMapping working?为什么我的 Spring Boot @RequestMapping 不起作用?
【发布时间】:2015-11-15 23:55:13
【问题描述】:

我有以下几点:

@RepositoryRestController
public class DataSetController {

     @RequestMapping(value = "/cars/test", method = RequestMethod.GET)
        public String testFetch() {
         return "HELLO";

     }
}

@RepositoryRestResource
public interface DataSetRepository extends PagingAndSortingRepository<DataSet, Integer>, QueryDslPredicateExecutor<DataSet> {}

启动时的日志显示如下:

2015-08-21 18:49:46.050 信息 52448 --- [主要] o.s.d.r.w.RepositoryRestHandlerMapping :映射 “{[/cars/test],methods=[GET]}” 到公共 java.lang.String com.example.hello.dataset.DataSetController.testFetch()

我的配置中的基本 uri 是:

base-uri: /api

所以我应该可以得到 localhost:8080/api/cars/test

但这是我在日志中得到的:

2015-08-21 18:58:10.847 警告 52476 --- [nio-8080-exec-1] os.web.servlet.PageNotFound : 未找到 HTTP 映射 在 DispatcherServlet 中使用 URI [/api/cars/test] 请求名称 'dispatcherServlet'

为什么?

【问题讨论】:

    标签: java spring spring-mvc spring-boot


    【解决方案1】:

    您的基本 URI /api 似乎未在您的配置中正确设置,这就是调度程序找不到正确映射的原因。

    由于您的所有请求都将具有 /api 基数,因此我建议您在 Controller 中添加 @RequestMapping 注释:

    @RepositoryRestController
    @RequestMapping("/api")
    public class DataSetController {
    
    }
    

    【讨论】:

    • 这是正确的,它解决了我的问题,但知道为什么我的其他控制器会按预期工作吗?我有一个应用程序配置,其中我有 spring.data.rest.base-uri=/api 只是这个控制器没有按预期工作
    • 很高兴我能帮上忙。显然 spring.data.rest.* 配置存在一个持续的问题(请参阅bug report)。你扩展了RepositoryRestMvcConfiguration 吗?
    【解决方案2】:

    你说你在配置中使用了base-uri,但它应该是spring.data.rest.base-uri

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-06-23
      • 2016-12-15
      • 1970-01-01
      • 2018-10-13
      • 2021-07-07
      • 2019-07-03
      • 1970-01-01
      • 2012-05-02
      相关资源
      最近更新 更多