使用严格基于注释的/仅Java的Spring MVC 3.2.2配置,我正在尝试使用自定义类(我将其称为Context
)作为参数创建一个控制器方法。我希望Context
使用当前HttpServletRequest
的知识构建,然后传递给控制器方法。本质上,我想在将请求对象发送到控制器之前创建自己的自定义包装器。例如我想完成这个:
@Controller
@RequestMapping(value = "/")
public class MainController {
@RequestMapping(value = "/")
public @ResponseBody
String process(HttpServletRequest request) {
Context context = new Context(request);
...
}
}
自动像这样:
@Controller
@RequestMapping(value = "/")
public class MainController {
@RequestMapping(value = "/")
public @ResponseBody
String process(Context context) {
...
}
}
这可能吗?我考虑在HandlerMethodArgumentResolver
中将@Bean
作为WebMvcConfigurerAdapter
实施,但我认为这不是正确的选择。我尝试将@AutoWired
添加到Context
(作为@Bean
)也无济于事。我想有WebMvcConfigurerAdapter
或可能在AbstractAnnotationConfigDispatcherServletInitializer
?
答案 0 :(得分:0)
HandlerMethodArgumentResolver
和WebMvcConfigurerAdapter
无疑是实现目标的正确方法。
要注册自定义参数解析器,您需要使@Configuration
扩展WebMvcConfigurerAdapter
并覆盖其addArgumentResolver()
方法。