|
|
|
|
@ -1,5 +1,5 @@
@@ -1,5 +1,5 @@
|
|
|
|
|
/* |
|
|
|
|
* Copyright 2002-2024 the original author or authors. |
|
|
|
|
* Copyright 2002-2025 the original author or authors. |
|
|
|
|
* |
|
|
|
|
* Licensed under the Apache License, Version 2.0 (the "License"); |
|
|
|
|
* you may not use this file except in compliance with the License. |
|
|
|
|
@ -317,15 +317,19 @@ public class HandlerMethod extends AnnotatedMethod {
@@ -317,15 +317,19 @@ public class HandlerMethod extends AnnotatedMethod {
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* If the provided instance contains a bean name rather than an object instance, |
|
|
|
|
* the bean name is resolved before a {@link HandlerMethod} is created and returned. |
|
|
|
|
* If the {@link #getBean() handler} is a bean name rather than the actual |
|
|
|
|
* handler instance, resolve the bean name through Spring configuration |
|
|
|
|
* (e.g. for prototype beans), and return a new {@link HandlerMethod} |
|
|
|
|
* instance with the resolved handler. |
|
|
|
|
* <p>If the {@link #getBean() handler} is not String, return the same instance. |
|
|
|
|
*/ |
|
|
|
|
public HandlerMethod createWithResolvedBean() { |
|
|
|
|
Object handler = this.bean; |
|
|
|
|
if (this.bean instanceof String beanName) { |
|
|
|
|
Assert.state(this.beanFactory != null, "Cannot resolve bean name without BeanFactory"); |
|
|
|
|
handler = this.beanFactory.getBean(beanName); |
|
|
|
|
if (!(this.bean instanceof String beanName)) { |
|
|
|
|
return this; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
Assert.state(this.beanFactory != null, "Cannot resolve bean name without BeanFactory"); |
|
|
|
|
Object handler = this.beanFactory.getBean(beanName); |
|
|
|
|
Assert.notNull(handler, "No handler instance"); |
|
|
|
|
return new HandlerMethod(this, handler, false); |
|
|
|
|
} |
|
|
|
|
|