Java Spring Boot/Kotlin忽略@QueryParam的值字段
我有一个Spring Boot/Kotlin web应用程序和一个接受查询参数的控制器 以下是我的控制器方法:Java Spring Boot/Kotlin忽略@QueryParam的值字段,java,spring,spring-boot,kotlin,jax-rs,Java,Spring,Spring Boot,Kotlin,Jax Rs,我有一个Spring Boot/Kotlin web应用程序和一个接受查询参数的控制器 以下是我的控制器方法: import org.springframework.web.bind.annotation.GetMapping import org.springframework.web.bind.annotation.ResponseBody import javax.ws.rs.Produces import javax.ws.rs.QueryParam ... @GetMapping("/
import org.springframework.web.bind.annotation.GetMapping
import org.springframework.web.bind.annotation.ResponseBody
import javax.ws.rs.Produces
import javax.ws.rs.QueryParam
...
@GetMapping("/items")
@ResponseBody
@Produces(MediaType.APPLICATION_JSON_VALUE)
fun getItems(@QueryParam("n") count: Int? = null): Collection<MyItem> {
return myItemService.list(count)
}
相反,Spring Boot始终使用变量名作为查询参数值:
curl http://localhost:8080/items?count=25
有什么好处?这是Spring Boot中的bug吗,还是Spring团队故意忽略了关于
@QueryParam
应该如何工作的文档,而选择使用变量名而不是注释值?您应该使用@RequestParam
,这很有帮助,但仍然让我好奇为什么Spring Boot的创建者错误地实现了JAX-RS规范。Spring MVC才是真正的SpringWeb框架的名称,不是JAX-RS实现。Spring Boot是Spring的引导框架,可以简化应用程序的启动。因此,您使用的是SpringBoot来启动SpringMVC应用程序。“只是一些FYI。”PaulSamsotha当然可以,但如果Spring做得不正确,为什么还要支持JAX-RS注释呢?老实说,感觉像是春天的一个bug,我很好奇是否有任何理由支持它。“但为什么要支持JAX-RS注释呢?”——它没有。您认为SpringMVC支持哪些JAX-RS注释?这两个框架完全不同,完全没有关系。
curl http://localhost:8080/items?count=25