Spring 启动应用程序中的@Context UriInfo 替换

@Context UriInfo replacement in Spring Boot app

我正在对 JettySpring 中运行的遗留单体应用程序进行现代化改造并将其转换为 Spring Boot 应用程序。

在遗留代码中,我有一个看起来像这样的端点:

@POST
@Produces({MediaType.APPLICATION_JSON})
@Consumes({MediaType.APPLICATION_JSON})
@Path("/zoo/feedCats")
@WebMethod
public Response giveFood( @Context UriInfo uri, HungryCats hungryCats){...}

Spring Boot 中新端点的初稿如下所示:

@PostMapping("/zoo/feedCats")
public Response giveFood( UriInfo uri , @RequestBody HungryCats hungryCats) {...}

我不确定遗留代码中 @Context UriInfo uri 的正确替代品应该是什么。

我从 2016 年找到了 ,想知道是否还有其他东西可以使用?

所以我就这样解决了:

已创建

class MyUriInfo implements UriInfo{..}

在控制器中我将签名更改为:

@PostMapping("/zoo/feedCats")
public Response giveFood(@RequestBody HungryCats hungryCats, 
                                      HttpServletRequest request,
                                      @RequestParam Map<String, String> allParams)

并创建了一个翻译器方法,从 requestallParams 中获取我需要的内容并将它们注入 MyUriInfo:

 public UriInfo requestToUriInfo(HttpServletRequest request, Map<String, String> 
                                                               allParams) {
     ...
     retrun new MyUriInfo(...)
 }