Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring @ControllerAdvice组件不考虑有序接口_Spring_Spring Mvc - Fatal编程技术网

Spring @ControllerAdvice组件不考虑有序接口

Spring @ControllerAdvice组件不考虑有序接口,spring,spring-mvc,Spring,Spring Mvc,从SpringJavadoc开始:@ControllerAdvice注释类应支持@Order接口和@Order注释。但这不适用于我的异常处理程序: @ControllerAdvice(annotations=Controller.class) 公共类MyExceptionHandler实现有序{…} 在查看源代码和调试过程中,我发现在我的例子中没有考虑到有序: private-controlleraviceean(对象bean,@Nullable-BeanFactory-BeanFactory

从SpringJavadoc开始:
@ControllerAdvice
注释类应支持
@Order
接口和
@Order
注释。但这不适用于我的异常处理程序:

@ControllerAdvice(annotations=Controller.class)
公共类MyExceptionHandler实现有序{…}
在查看源代码和调试过程中,我发现在我的例子中没有考虑到
有序

private-controlleraviceean(对象bean,@Nullable-BeanFactory-BeanFactory){
this.bean=bean;
this.beanFactory=beanFactory;
类beanType;
if(字符串的bean实例){
字符串bean名称=(字符串)bean;
Assert.hasText(beanName,“Bean名称不能为null”);
Assert.notNull(beanFactory,“beanFactory不得为null”);
如果(!beanFactory.containsBean(beanName)){
抛出新的IllegalArgumentException(“BeanFactory[”+BeanFactory+
“]不包含指定的控制器建议bean”“+beanName+“””);
}
beanType=this.beanFactory.getType(beanName);
//只执行此代码!!!
//这只使用@Order注释
this.order=initOrderFromBeanType(beanType);
}
否则{
//死代码???Spring只将字符串参数传递给此构造函数
notNull(bean,“bean不能为null”);
beanType=bean.getClass();
//这将使用Ordered和@Order注释
this.order=initOrderFromBean(bean);
}
...
}
另请参见
controlleradviceean.findAnnotatedBeans()
如何找到带注释的bean:

公共静态列表FindAnotatedBeans(ApplicationContext ApplicationContext){
listbeans=newarraylist();
for(字符串名称:BeanFactoryUtils.BeanNamesForTypeIncludingOrients(applicationContext,Object.class)){
if(applicationContext.FindAnotationBean(name,ControllerAdvice.class)!=null){
add(new controlleradvicean(name,applicationContext));//第一个参数传递的字符串
}
}
返豆;
}

我是否遗漏了
@ControllerAdvice
?或者这是一个bug?

您的期望是什么?修复此问题并支持订购的
,将是非常好的。如果太复杂,那么至少我们应该更新文档。有关最新详细信息,请参阅相关的Spring GitHub问题: