diff --git a/spring-web/src/main/java/org/springframework/web/method/ControllerAdviceBean.java b/spring-web/src/main/java/org/springframework/web/method/ControllerAdviceBean.java
index 90b59765d9ac..352e45186f96 100644
--- a/spring-web/src/main/java/org/springframework/web/method/ControllerAdviceBean.java
+++ b/spring-web/src/main/java/org/springframework/web/method/ControllerAdviceBean.java
@@ -126,23 +126,25 @@ public ControllerAdviceBean(String beanName, BeanFactory beanFactory, @Nullable
*
As of Spring Framework 5.2, the order value is lazily retrieved using
* the following algorithm and cached.
*
- * - If the {@linkplain #resolveBean resolved bean} implements {@link Ordered},
- * use the value returned by {@link Ordered#getOrder()}.
- * - Otherwise use the value returned by {@link OrderUtils#getOrder(Class, int)}
+ *
- If {@link #beanType} is not null,
+ * use the value returned by {@link OrderUtils#getOrder(Class, int)}
* with {@link Ordered#LOWEST_PRECEDENCE} used as the default order value.
+ * - Otherwise if the {@linkplain #resolveBean resolved bean} implements {@link Ordered},
+ * use the value returned by {@link Ordered#getOrder()}.
*
* @see #resolveBean()
*/
@Override
public int getOrder() {
if (this.order == null) {
+ if (this.beanType != null) {
+ this.order = OrderUtils.getOrder(this.beanType, Ordered.LOWEST_PRECEDENCE);
+ return this.order;
+ }
Object resolvedBean = resolveBean();
if (resolvedBean instanceof Ordered) {
this.order = ((Ordered) resolvedBean).getOrder();
}
- else if (this.beanType != null) {
- this.order = OrderUtils.getOrder(this.beanType, Ordered.LOWEST_PRECEDENCE);
- }
else {
this.order = Ordered.LOWEST_PRECEDENCE;
}