Revise TargetSource implementations for proper nullability
Includes hashCode optimization in AbstractBeanFactoryBasedTargetSource.
Includes ThreadLocal naming fix in ThreadLocalTargetSource.
Closes gh-30576
Closes gh-30581
(cherry picked from commit c68552556f)
@ -81,6 +82,11 @@ public abstract class AbstractBeanFactoryBasedTargetSourceCreator
@@ -81,6 +82,11 @@ public abstract class AbstractBeanFactoryBasedTargetSourceCreator
// Implementation of the TargetSourceCreator interface
@ -104,7 +110,7 @@ public abstract class AbstractBeanFactoryBasedTargetSourceCreator
@@ -104,7 +110,7 @@ public abstract class AbstractBeanFactoryBasedTargetSourceCreator
// We need to override just this bean definition, as it may reference other beans
// and we're happy to take the parent's definition for those.
@ -126,7 +132,7 @@ public abstract class AbstractBeanFactoryBasedTargetSourceCreator
@@ -126,7 +132,7 @@ public abstract class AbstractBeanFactoryBasedTargetSourceCreator
@ -57,15 +59,18 @@ public abstract class AbstractBeanFactoryBasedTargetSource implements TargetSour
@@ -57,15 +59,18 @@ public abstract class AbstractBeanFactoryBasedTargetSource implements TargetSour
@ -86,6 +91,7 @@ public abstract class AbstractBeanFactoryBasedTargetSource implements TargetSour
@@ -86,6 +91,7 @@ public abstract class AbstractBeanFactoryBasedTargetSource implements TargetSour
*Returnthenameofthetargetbeaninthefactory.
*/
publicStringgetTargetBeanName(){
Assert.state(this.targetBeanName!=null,"Target bean name not set");
returnthis.targetBeanName;
}
@ -115,11 +121,13 @@ public abstract class AbstractBeanFactoryBasedTargetSource implements TargetSour
@@ -115,11 +121,13 @@ public abstract class AbstractBeanFactoryBasedTargetSource implements TargetSour
*ReturntheowningBeanFactory.
*/
publicBeanFactorygetBeanFactory(){
Assert.state(this.beanFactory!=null,"BeanFactory not set");
returnthis.beanFactory;
}
@Override
@Nullable
publicClass<?>getTargetClass(){
Class<?>targetClass=this.targetClass;
if(targetClass!=null){
@ -128,7 +136,7 @@ public abstract class AbstractBeanFactoryBasedTargetSource implements TargetSour
@@ -128,7 +136,7 @@ public abstract class AbstractBeanFactoryBasedTargetSource implements TargetSour
synchronized(this){
// Full check within synchronization, entering the BeanFactory interaction algorithm only once...
@ -182,18 +190,16 @@ public abstract class AbstractBeanFactoryBasedTargetSource implements TargetSour
@@ -182,18 +190,16 @@ public abstract class AbstractBeanFactoryBasedTargetSource implements TargetSour
@ -70,6 +70,7 @@ public final class EmptyTargetSource implements TargetSource, Serializable {
@@ -70,6 +70,7 @@ public final class EmptyTargetSource implements TargetSource, Serializable {
@ -58,7 +58,12 @@ public class ThreadLocalTargetSource extends AbstractPrototypeBasedTargetSource
@@ -58,7 +58,12 @@ public class ThreadLocalTargetSource extends AbstractPrototypeBasedTargetSource