Java 是否可以在没有@EnableWebMvc和WebMVCConfigureAdapter的情况下配置自定义参数解析器
上下文 REST API实现为Spring boot 1.5.3项目,无需Java 是否可以在没有@EnableWebMvc和WebMVCConfigureAdapter的情况下配置自定义参数解析器,java,spring,spring-boot,Java,Spring,Spring Boot,上下文 REST API实现为Spring boot 1.5.3项目,无需@EnableWebMvc 目标 对于每个API调用,创建一个UUID字符串,并将其注入控制器方法以进行审计(UUID用于响应体和日志记录)。应按如下方式使用: @PostMapping("/reserveCredits") public ResponseEntity<Result> reserveCredits(String uuid) { ... ... new Result(uuid) .
@EnableWebMvc
目标
对于每个API调用,创建一个UUID字符串,并将其注入控制器方法以进行审计(UUID用于响应体和日志记录)。应按如下方式使用:
@PostMapping("/reserveCredits")
public ResponseEntity<Result> reserveCredits(String uuid) {
...
... new Result(uuid) ...
。。。在我的@Configuration
bean中,我得到BeanCreationException:创建名为“defaultServletHandlerMapping”的bean时出错,因为需要ServletContext
问题
Spring boot如何在没有@EnableWebMvc
的情况下注册其默认参数解析器李>
我是否可以在不使用@EnableWebMvc
的情况下添加自定义参数解析器李>
是否高度推荐使用@EnableWebMvc
,我应该将其更新到我的代码中
我应该选择其他解决方案吗
备选方案
- 覆盖方法参数值的侵入性AOP
- HandlerInterceptor,它将uuid添加到请求参数并更新响应正文
根据@M.Denium的评论得出的答案:
是的,不使用@EnableWebMvc
也可以。通过扩展WebMVCConfigureAdapter
进行的配置没有回归影响的风险RequestMappingHandlerAdapter
不必自动连接到config类中
@Configuration
public class MyWebMvcConfig extends WebMvcConfigurerAdapter {
@Override
public void addArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers) {
argumentResolvers.add(new MyCustomArgumentResolver());
}
}
@配置
公共类MyWebMvcConfig扩展了WebMVCConfigureAdapter{
@凌驾
public void addArgumentResolver(列出ArgumentResolver){
添加(新的MyCustomArgumentResolver());
}
}
您不需要@EnableWebMvc
,因为Spring Boot已经为您做到了这一点。只需添加一个扩展WebMVCConfigureAdapter
的@Configuration
类。
@Autowired
private RequestMappingHandlerAdapter requestMappingHandlerAdapter;
@Configuration
public class MyWebMvcConfig extends WebMvcConfigurerAdapter {
@Override
public void addArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers) {
argumentResolvers.add(new MyCustomArgumentResolver());
}
}