2017-10-02 6 views
0

mvcモデルにいくつかの事前定義データを入れたいと思います。Spring MVCでデフォルトのMethodArgumentResolversをデコレート/オーバーライドする

カスタム注釈とカスタムHandlerMethodArgumentResolverを作成しました。 私のコントローラは、次のようになります。

@RequestMapping(value = "/{id}") 
public void findById(@PathVariable(name = "id") Integer id, @CustomAnnotation Model model) {} 

しかし、Spring MVCのは、別の注釈やクラスのために、約30の定義済みMethodArgumentResolversを持ち、そしてModel.class春のためModelMethodProcessorを使用しています。

どうにか置き換えることはできますか?

@Configuration 
public class MvcConfig extends DelegatingWebMvcConfiguration { 

    @Override 
    protected RequestMappingHandlerAdapter createRequestMappingHandlerAdapter(){ 
     return new MyRequestMappingHandlerAdapter(); 
    } 

} 

今では動作します:

答えて

0

は最後に、私は私がカスタム1で元RequestMappingHandlerAdapterを置き換えRequestMappingHandlerAdapterを拡張し、その後

public void afterPropertiesSet() { 
    super.afterPropertiesSet(); 
    List<HandlerMethodArgumentResolver> argumentResolvers = new ArrayList<>(); 
    argumentResolvers.add(new AveModelMethodProcessor()); 
    argumentResolvers.addAll(this.getArgumentResolvers()); 
    this.setArgumentResolvers(argumentResolvers); 
} 

をオーバーライド。それは最適な方法ですか?

関連する問題