2012-11-04 44 views
0

的Javadoc说AnnotationMethodHandlerExceptionResolverResponseStatusExceptionResolverDefaultHandlerExceptionResolver默认情况下,在DispatcherServlet的启用。如何检索默认HandlerExceptionResolver情况下,在Spring 3.x的?

我想创建一个HandlerExceptionResolverComposite,但我想找回默认启用HandlerExceptionResolver实例。我试过@Autowired,但没有成功。

我目前的解决办法是:

@Configuration 
public class ErrorHandling { 

// @Autowired 
// AnnotationMethodHandlerExceptionResolver amher; 
// 
// @Autowired 
// ResponseStatusExceptionResolver rser; 
// 
// @Autowired 
// DefaultHandlerExceptionResolver dher; 

    @Bean 
    HandlerExceptionResolverComposite getHandlerExceptionResolverComposite() { 

     HandlerExceptionResolverComposite result 
      = new HandlerExceptionResolverComposite(); 

     List<HandlerExceptionResolver> l 
      = new ArrayList<HandlerExceptionResolver>(); 

     l.add(new AnnotationMethodHandlerExceptionResolver()); 
     l.add(new ResponseStatusExceptionResolver()); 
     l.add(new DefaultHandlerExceptionResolver()); 

     result.setExceptionResolvers(l); 

     return result; 

    } 

} 

我的问题是:我怎么可以检索默认启用HandlerExceptionResolver实例?它是一个问题,如果我创造我自己的情况?

+0

它工作的解决方案? –

+0

是的,但我只测试一个案例。 – JVerstry

回答

1

在BeanFactoryUtils

Map<String, HandlerExceptionResolver> matchingBeans = BeanFactoryUtils 
        .beansOfTypeIncludingAncestors(context, HandlerExceptionResolver.class, true, false); 

找到东西检查DispatchServlet的来源和去initHandlerExceptionResolvers()方法,也许你可以找到让所有注册的异常解析器的一种方式。

谢谢