0

我面临 Spring mvc 注释@Controlleradvice的问题。我有 2 个控制器类:UserGapsControllerRegistrationBaseController 两个类都使用

  1. @控制器
  2. @Controlleradvice
  3. @Autowired 会话对象
  4. @Scope(WebApplicationContext.SCOPE_SESSION)

在方法级别使用@Modelattribute时,必须使用@Controlleradvice 注释。所以我在两个类中都有一个用@Modelattribute 注释的方法。现在的问题是,当我在 UserGapsController.java 中使用 @Controlleradvice 时,应用程序运行良好,当我在 RegistrationBaseController.java 中也使用 @Controlleradvice 时,它​​在运行时出现以下错误:

创建名为“org.springframework.web.servlet.mvc.method.annotation.requestmappinghandler”的bean时出错:调用init方法失败:嵌套的异常是org.springframework.beans.factory.BeanCreationException:创建名为“userGapsController”的bean时出错:范围“会话”对当前线程无效

这个错误的原因是什么,我们不能有 2 个 @Controlleradvice 注释类吗?当我在 RegistrationBaseController.java 中评论 @Controlleradvice 时,它​​执行得很好。

4

1 回答 1

1

您试图拥有多个@ControllerAdvice处理不同异常的类。

您可以像这样使用 Order over controllerAdvice

@ControllerAdvice
@Order(Ordered.HIGHEST_PRECEDENCE)
public class RegistrationExceptionHandler {

    //...

}

@ControllerAdvice
@Order(Ordered.LOWEST_PRECEDENCE) // or any int value
public class UserGapsExceptionHandler {

    //...

}
于 2020-11-29T15:19:15.733 回答