27
27
28
28
import org .springframework .beans .factory .BeanCreationException ;
29
29
import org .springframework .beans .factory .config .ConfigurableBeanFactory ;
30
+ import org .springframework .lang .Nullable ;
30
31
import org .springframework .util .Assert ;
31
32
import org .springframework .util .ReflectionUtils ;
32
- import org .springframework .util .StringUtils ;
33
33
34
34
/**
35
35
* An internal class used to track {@link BeanOverrideHandler}-related state after
@@ -110,14 +110,13 @@ Object wrapBeanIfNecessary(Object bean, String beanName) {
110
110
void inject (Object target , BeanOverrideHandler handler ) {
111
111
Field field = handler .getField ();
112
112
Assert .notNull (field , () -> "BeanOverrideHandler must have a non-null field: " + handler );
113
- String beanName = this . handlerToBeanNameMap . get (handler );
114
- Assert .state (StringUtils . hasLength ( beanName ) , () -> "No bean found for BeanOverrideHandler: " + handler );
115
- inject (field , target , beanName );
113
+ Object bean = getBeanForHandler (handler , field . getType () );
114
+ Assert .state (bean != null , () -> "No bean found for BeanOverrideHandler: " + handler );
115
+ inject (field , target , bean );
116
116
}
117
117
118
- private void inject (Field field , Object target , String beanName ) {
118
+ private void inject (Field field , Object target , Object bean ) {
119
119
try {
120
- Object bean = this .beanFactory .getBean (beanName , field .getType ());
121
120
ReflectionUtils .makeAccessible (field );
122
121
ReflectionUtils .setField (field , target , bean );
123
122
}
@@ -126,4 +125,13 @@ private void inject(Field field, Object target, String beanName) {
126
125
}
127
126
}
128
127
128
+ @ Nullable
129
+ private Object getBeanForHandler (BeanOverrideHandler handler , Class <?> requiredType ) {
130
+ String beanName = this .handlerToBeanNameMap .get (handler );
131
+ if (beanName != null ) {
132
+ return this .beanFactory .getBean (beanName , requiredType );
133
+ }
134
+ return null ;
135
+ }
136
+
129
137
}
0 commit comments