0

Javadoc 说AnnotationMethodHandlerExceptionResolverResponseStatusExceptionResolverDefaultHandlerExceptionResolver在 DispatcherServlet 中默认启用。

我正在尝试创建一个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默认启用的实例?如果我创建自己的实例会不会有问题?

4

1 回答 1

1

在 BeanFactoryUtils 中找到了一些东西

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

检查 DispatchServlet 的来源并转到 initHandlerExceptionResolvers() 方法,可能您可以找到一种获取所有已注册异常解析器的方法。

谢谢

于 2012-11-05T07:29:09.460 回答