Javadoc 说 AnnotationMethodHandlerExceptionResolver , ResponseStatusExceptionResolver和 DefaultHandlerExceptionResolver默认情况下在 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
实例?如果我创建自己的实例会有问题吗?
最佳答案
在 BeanFactoryUtils 中发现一些东西
Map<String, HandlerExceptionResolver> matchingBeans = BeanFactoryUtils
.beansOfTypeIncludingAncestors(context, HandlerExceptionResolver.class, true, false);
查看DispatchServlet的源码,进入initHandlerExceptionResolvers()方法,也许你可以找到获取所有已注册异常解析器的方法。
谢谢
关于java - 如何在 Spring 3.x 中检索默认的 HandlerExceptionResolver 实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13222292/