Skip to content

Commit 3431b23

Browse files
committed
Avoid unnecessary parameter name inspection for factory method type check
Closes gh-30103 See gh-29612
1 parent 99e54fe commit 3431b23

File tree

2 files changed

+144
-58
lines changed

2 files changed

+144
-58
lines changed

spring-beans/src/main/java/org/springframework/beans/factory/support/AbstractAutowireCapableBeanFactory.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -754,13 +754,15 @@ protected Class<?> getTypeForFactoryMethod(String beanName, RootBeanDefinition m
754754
if (candidate.getTypeParameters().length > 0) {
755755
try {
756756
// Fully resolve parameter names and argument values.
757+
ConstructorArgumentValues cav = mbd.getConstructorArgumentValues();
757758
Class<?>[] paramTypes = candidate.getParameterTypes();
758759
String[] paramNames = null;
759-
ParameterNameDiscoverer pnd = getParameterNameDiscoverer();
760-
if (pnd != null) {
761-
paramNames = pnd.getParameterNames(candidate);
760+
if (cav.containsNamedArgument()) {
761+
ParameterNameDiscoverer pnd = getParameterNameDiscoverer();
762+
if (pnd != null) {
763+
paramNames = pnd.getParameterNames(candidate);
764+
}
762765
}
763-
ConstructorArgumentValues cav = mbd.getConstructorArgumentValues();
764766
Set<ConstructorArgumentValues.ValueHolder> usedValueHolders = new HashSet<>(paramTypes.length);
765767
Object[] args = new Object[paramTypes.length];
766768
for (int i = 0; i < args.length; i++) {

0 commit comments

Comments
 (0)