我想将一些预定义的数据放到mvc模型中。
我创建了自定义注释,并自定义了HandlerMethodArgumentResolver。 我的控制器现在看起来像这样:
@RequestMapping(value = "/{id}")
public void findById(@PathVariable(name = "id") Integer id, @CustomAnnotation Model model) {}
但是Spring mvc对于不同的注释和类有大约30个预定义的MethodArgumentResolvers,对于Model.class,Spring使用ModelMethodProcessor。
我可以以某种方式覆盖它吗?
答案 0 :(得分:0)
最后,我扩展了RequestMappingHandlerAdapter并覆盖了
public void afterPropertiesSet() {
super.afterPropertiesSet();
List<HandlerMethodArgumentResolver> argumentResolvers = new ArrayList<>();
argumentResolvers.add(new AveModelMethodProcessor());
argumentResolvers.addAll(this.getArgumentResolvers());
this.setArgumentResolvers(argumentResolvers);
}
之后我用自定义的一个替换了原始的RequestMappingHandlerAdapter:
@Configuration
public class MvcConfig extends DelegatingWebMvcConfiguration {
@Override
protected RequestMappingHandlerAdapter createRequestMappingHandlerAdapter(){
return new MyRequestMappingHandlerAdapter();
}
}
现在它有效。这是最佳方式吗?