上下文
RESTAPI作为Spring boot 1.5.3项目实现,没有
@EnableWebMvc
目标
对于每个API调用,创建一个UUID字符串,并将其注入控制器方法以进行审计(UUID用于响应体和日志记录)。应按如下方式使用:
@PostMapping("/reserveCredits")
public ResponseEntity<Result> reserveCredits(String uuid) {
...
... new Result(uuid) ...
@Configuration
@EnableWebMvc
public class MyWebMvcConfig extends WebMvcConfigurerAdapter {
@Override
public void addArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers) {
argumentResolvers.add(new MyCustomArgumentResolver());
}
}
问题
我的整个项目只使用REST控制器。我目前没有使用
@EnableWebMvc
我现在不想介绍它,因为它可能与我现有的配置冲突。当我尝试使用。。。
@Autowired
private RequestMappingHandlerAdapter requestMappingHandlerAdapter;
@Configuration
我得到了豆子
BeanCreationException: Error creating bean with name 'defaultServletHandlerMapping'
由于
ServletContext is required
.
问题
-
@EnableWebMvc
?
-
我是否可以添加自定义参数解析器而不使用
?
-
正在使用
@EnableWebMvc
高度推荐,我应该在我的代码中改进它吗?
-
我应该选择其他解决方案吗?
替代方案
-
覆盖方法参数值的侵入性AOP
-
HandlerInterceptor,它将uuid添加到请求参数并更新响应正文