Skip to content

Commit c8927ae

Browse files
committed
Polishing
1 parent e228f4b commit c8927ae

File tree

2 files changed

+29
-36
lines changed

2 files changed

+29
-36
lines changed

spring-beans/src/main/java/org/springframework/beans/factory/aot/BeanInstanceSupplier.java

Lines changed: 26 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -237,33 +237,28 @@ AutowiredArguments resolveArguments(RegisteredBean registeredBean) {
237237

238238
private AutowiredArguments resolveArguments(RegisteredBean registeredBean, Executable executable) {
239239
Assert.isInstanceOf(AbstractAutowireCapableBeanFactory.class, registeredBean.getBeanFactory());
240-
String beanName = registeredBean.getBeanName();
241-
Class<?> beanClass = registeredBean.getBeanClass();
242-
AbstractAutowireCapableBeanFactory beanFactory =
243-
(AbstractAutowireCapableBeanFactory) registeredBean.getBeanFactory();
244-
RootBeanDefinition mergedBeanDefinition = registeredBean.getMergedBeanDefinition();
240+
245241
int startIndex = (executable instanceof Constructor<?> constructor &&
246242
ClassUtils.isInnerClass(constructor.getDeclaringClass())) ? 1 : 0;
247243
int parameterCount = executable.getParameterCount();
248244
Object[] resolved = new Object[parameterCount - startIndex];
249245
Assert.isTrue(this.shortcuts == null || this.shortcuts.length == resolved.length,
250246
() -> "'shortcuts' must contain " + resolved.length + " elements");
247+
248+
ConstructorArgumentValues argumentValues = resolveArgumentValues(registeredBean);
251249
Set<String> autowiredBeans = new LinkedHashSet<>(resolved.length);
252-
ConstructorArgumentValues argumentValues = resolveArgumentValues(beanFactory,
253-
beanName, mergedBeanDefinition);
254250
for (int i = startIndex; i < parameterCount; i++) {
255251
MethodParameter parameter = getMethodParameter(executable, i);
256-
DependencyDescriptor dependencyDescriptor = new DependencyDescriptor(parameter, true);
257-
String shortcut = (this.shortcuts != null) ? this.shortcuts[i - startIndex] : null;
252+
DependencyDescriptor descriptor = new DependencyDescriptor(parameter, true);
253+
String shortcut = (this.shortcuts != null ? this.shortcuts[i - startIndex] : null);
258254
if (shortcut != null) {
259-
dependencyDescriptor = new ShortcutDependencyDescriptor(
260-
dependencyDescriptor, shortcut, beanClass);
255+
descriptor = new ShortcutDependencyDescriptor(descriptor, shortcut, registeredBean.getBeanClass());
261256
}
262257
ValueHolder argumentValue = argumentValues.getIndexedArgumentValue(i, null);
263-
resolved[i - startIndex] = resolveArgument(registeredBean,autowiredBeans,
264-
dependencyDescriptor, argumentValue);
258+
resolved[i - startIndex] = resolveArgument(registeredBean, descriptor, argumentValue, autowiredBeans);
265259
}
266-
registerDependentBeans(beanFactory, beanName, autowiredBeans);
260+
registerDependentBeans(registeredBean.getBeanFactory(), registeredBean.getBeanName(), autowiredBeans);
261+
267262
return AutowiredArguments.of(resolved);
268263
}
269264

@@ -277,15 +272,14 @@ private MethodParameter getMethodParameter(Executable executable, int index) {
277272
throw new IllegalStateException("Unsupported executable: " + executable.getClass().getName());
278273
}
279274

280-
private ConstructorArgumentValues resolveArgumentValues(
281-
AbstractAutowireCapableBeanFactory beanFactory, String beanName,
282-
RootBeanDefinition mergedBeanDefinition) {
283-
275+
private ConstructorArgumentValues resolveArgumentValues(RegisteredBean registeredBean) {
284276
ConstructorArgumentValues resolved = new ConstructorArgumentValues();
285-
if (mergedBeanDefinition.hasConstructorArgumentValues()) {
277+
RootBeanDefinition beanDefinition = registeredBean.getMergedBeanDefinition();
278+
if (beanDefinition.hasConstructorArgumentValues() &&
279+
registeredBean.getBeanFactory() instanceof AbstractAutowireCapableBeanFactory beanFactory) {
286280
BeanDefinitionValueResolver valueResolver = new BeanDefinitionValueResolver(
287-
beanFactory, beanName, mergedBeanDefinition, beanFactory.getTypeConverter());
288-
ConstructorArgumentValues values = mergedBeanDefinition.getConstructorArgumentValues();
281+
beanFactory, registeredBean.getBeanName(), beanDefinition, beanFactory.getTypeConverter());
282+
ConstructorArgumentValues values = beanDefinition.getConstructorArgumentValues();
289283
values.getIndexedArgumentValues().forEach((index, valueHolder) -> {
290284
ValueHolder resolvedValue = resolveArgumentValue(valueResolver, valueHolder);
291285
resolved.addIndexedArgumentValue(index, resolvedValue);
@@ -298,30 +292,27 @@ private ValueHolder resolveArgumentValue(BeanDefinitionValueResolver resolver, V
298292
if (valueHolder.isConverted()) {
299293
return valueHolder;
300294
}
301-
Object resolvedValue = resolver.resolveValueIfNecessary("constructor argument",
302-
valueHolder.getValue());
303-
ValueHolder resolvedValueHolder = new ValueHolder(resolvedValue,
304-
valueHolder.getType(), valueHolder.getName());
305-
resolvedValueHolder.setSource(valueHolder);
306-
return resolvedValueHolder;
295+
Object value = resolver.resolveValueIfNecessary("constructor argument", valueHolder.getValue());
296+
ValueHolder resolvedHolder = new ValueHolder(value, valueHolder.getType(), valueHolder.getName());
297+
resolvedHolder.setSource(valueHolder);
298+
return resolvedHolder;
307299
}
308300

309301
@Nullable
310-
private Object resolveArgument(RegisteredBean registeredBean, Set<String> autowiredBeans,
311-
DependencyDescriptor dependencyDescriptor, @Nullable ValueHolder argumentValue) {
302+
private Object resolveArgument(RegisteredBean registeredBean, DependencyDescriptor descriptor,
303+
@Nullable ValueHolder argumentValue, Set<String> autowiredBeans) {
312304

313305
TypeConverter typeConverter = registeredBean.getBeanFactory().getTypeConverter();
314-
Class<?> parameterType = dependencyDescriptor.getMethodParameter().getParameterType();
315306
if (argumentValue != null) {
316-
return (!argumentValue.isConverted()) ?
317-
typeConverter.convertIfNecessary(argumentValue.getValue(), parameterType) :
318-
argumentValue.getConvertedValue();
307+
return (argumentValue.isConverted() ? argumentValue.getConvertedValue() :
308+
typeConverter.convertIfNecessary(argumentValue.getValue(),
309+
descriptor.getDependencyType(), descriptor.getMethodParameter()));
319310
}
320311
try {
321-
return registeredBean.resolveAutowiredArgument(dependencyDescriptor, typeConverter, autowiredBeans);
312+
return registeredBean.resolveAutowiredArgument(descriptor, typeConverter, autowiredBeans);
322313
}
323314
catch (BeansException ex) {
324-
throw new UnsatisfiedDependencyException(null, registeredBean.getBeanName(), dependencyDescriptor, ex);
315+
throw new UnsatisfiedDependencyException(null, registeredBean.getBeanName(), descriptor, ex);
325316
}
326317
}
327318

spring-context/src/testFixtures/java/org/springframework/context/testfixture/AbstractApplicationContextTests.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,8 +57,9 @@ public abstract class AbstractApplicationContextTests extends AbstractListableBe
5757

5858
protected TestApplicationListener parentListener = new TestApplicationListener();
5959

60+
6061
@BeforeEach
61-
public void setUp() throws Exception {
62+
public void setup() throws Exception {
6263
this.applicationContext = createContext();
6364
}
6465

@@ -79,6 +80,7 @@ protected ApplicationContext getApplicationContext() {
7980
*/
8081
protected abstract ConfigurableApplicationContext createContext() throws Exception;
8182

83+
8284
@Test
8385
public void contextAwareSingletonWasCalledBack() throws Exception {
8486
ACATester aca = (ACATester) applicationContext.getBean("aca");

0 commit comments

Comments
 (0)