Spring 启动应用程序中的@Context UriInfo 替换
@Context UriInfo replacement in Spring Boot app
我正在对 Jetty
上 Spring
中运行的遗留单体应用程序进行现代化改造并将其转换为 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)
并创建了一个翻译器方法,从 request
和 allParams
中获取我需要的内容并将它们注入 MyUriInfo
:
public UriInfo requestToUriInfo(HttpServletRequest request, Map<String, String>
allParams) {
...
retrun new MyUriInfo(...)
}
我正在对 Jetty
上 Spring
中运行的遗留单体应用程序进行现代化改造并将其转换为 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)
并创建了一个翻译器方法,从 request
和 allParams
中获取我需要的内容并将它们注入 MyUriInfo
:
public UriInfo requestToUriInfo(HttpServletRequest request, Map<String, String>
allParams) {
...
retrun new MyUriInfo(...)
}