DefaultListableBeanFactory performs a fallback check for autowire candidates now, which GenericTypeAwareAutowireCandidateResolver implements to accept raw type matches if the target class has unresolvable type variables. Full generic matches are still preferred; the BeanFactory will only start looking for fallback matches if the first pass led to an empty result.
Issue: SPR-10993
Issue: SPR-11004
@ -212,6 +212,29 @@ public class DependencyDescriptor implements Serializable {
@@ -212,6 +212,29 @@ public class DependencyDescriptor implements Serializable {
@ -241,7 +264,8 @@ public class DependencyDescriptor implements Serializable {
@@ -241,7 +264,8 @@ public class DependencyDescriptor implements Serializable {
@ -979,6 +979,14 @@ public class DefaultListableBeanFactory extends AbstractAutowireCapableBeanFacto
@@ -979,6 +979,14 @@ public class DefaultListableBeanFactory extends AbstractAutowireCapableBeanFacto
@ -57,24 +57,28 @@ public class GenericTypeAwareAutowireCandidateResolver implements AutowireCandid
@@ -57,24 +57,28 @@ public class GenericTypeAwareAutowireCandidateResolver implements AutowireCandid
// if explicitly false, do not proceed with any other checks
// Regular case: straight bean instance, with BeanFactory available.
@ -86,14 +90,20 @@ public class GenericTypeAwareAutowireCandidateResolver implements AutowireCandid
@@ -86,14 +90,20 @@ public class GenericTypeAwareAutowireCandidateResolver implements AutowireCandid
}
// Fallback: no BeanFactory set, or no type resolvable through it
// -> best-effort match against the target class if applicable.
@ -1305,6 +1305,130 @@ public class AutowiredAnnotationBeanPostProcessorTests {
@@ -1305,6 +1305,130 @@ public class AutowiredAnnotationBeanPostProcessorTests {
@ -1859,6 +1983,18 @@ public class AutowiredAnnotationBeanPostProcessorTests {
@@ -1859,6 +1983,18 @@ public class AutowiredAnnotationBeanPostProcessorTests {
@ -105,8 +105,7 @@ public final class ResolvableType implements Serializable {
@@ -105,8 +105,7 @@ public final class ResolvableType implements Serializable {
@ -116,7 +115,6 @@ public final class ResolvableType implements Serializable {
@@ -116,7 +115,6 @@ public final class ResolvableType implements Serializable {
@ -131,13 +129,25 @@ public final class ResolvableType implements Serializable {
@@ -131,13 +129,25 @@ public final class ResolvableType implements Serializable {
@ -161,8 +171,7 @@ public final class ResolvableType implements Serializable {
@@ -161,8 +171,7 @@ public final class ResolvableType implements Serializable {
// Deal with array by delegating to the component type
@ -171,8 +180,8 @@ public final class ResolvableType implements Serializable {
@@ -171,8 +180,8 @@ public final class ResolvableType implements Serializable {
// in the from X is assignable to <? extends Number>
// in the form <? extends Number> is assignable to X ...
@ -189,8 +198,7 @@ public final class ResolvableType implements Serializable {
@@ -189,8 +198,7 @@ public final class ResolvableType implements Serializable {
@ -228,8 +236,7 @@ public final class ResolvableType implements Serializable {
@@ -228,8 +236,7 @@ public final class ResolvableType implements Serializable {
@ -291,7 +298,7 @@ public final class ResolvableType implements Serializable {
@@ -291,7 +298,7 @@ public final class ResolvableType implements Serializable {
@ -305,7 +312,7 @@ public final class ResolvableType implements Serializable {
@@ -305,7 +312,7 @@ public final class ResolvableType implements Serializable {
@ -321,6 +328,35 @@ public final class ResolvableType implements Serializable {
@@ -321,6 +328,35 @@ public final class ResolvableType implements Serializable {
@ -362,8 +398,7 @@ public final class ResolvableType implements Serializable {
@@ -362,8 +398,7 @@ public final class ResolvableType implements Serializable {
@ -515,10 +550,8 @@ public final class ResolvableType implements Serializable {
@@ -515,10 +550,8 @@ public final class ResolvableType implements Serializable {
@ -535,7 +568,7 @@ public final class ResolvableType implements Serializable {
@@ -535,7 +568,7 @@ public final class ResolvableType implements Serializable {
@ -555,7 +588,6 @@ public final class ResolvableType implements Serializable {
@@ -555,7 +588,6 @@ public final class ResolvableType implements Serializable {
@ -571,8 +603,7 @@ public final class ResolvableType implements Serializable {
@@ -571,8 +603,7 @@ public final class ResolvableType implements Serializable {
@ -627,7 +658,7 @@ public final class ResolvableType implements Serializable {
@@ -627,7 +658,7 @@ public final class ResolvableType implements Serializable {
@ -640,22 +671,7 @@ public final class ResolvableType implements Serializable {
@@ -640,22 +671,7 @@ public final class ResolvableType implements Serializable {
@ -842,8 +858,7 @@ public final class ResolvableType implements Serializable {
@@ -842,8 +858,7 @@ public final class ResolvableType implements Serializable {
@ -858,8 +873,7 @@ public final class ResolvableType implements Serializable {
@@ -858,8 +873,7 @@ public final class ResolvableType implements Serializable {
@ -877,15 +891,13 @@ public final class ResolvableType implements Serializable {
@@ -877,15 +891,13 @@ public final class ResolvableType implements Serializable {
@ -896,44 +908,17 @@ public final class ResolvableType implements Serializable {
@@ -896,44 +908,17 @@ public final class ResolvableType implements Serializable {
@ -948,9 +933,8 @@ public final class ResolvableType implements Serializable {
@@ -948,9 +933,8 @@ public final class ResolvableType implements Serializable {
@ -972,7 +956,7 @@ public final class ResolvableType implements Serializable {
@@ -972,7 +956,7 @@ public final class ResolvableType implements Serializable {
// Check the cache, we may have a ResolvableType that may have already been resolved
@ -1002,7 +986,51 @@ public final class ResolvableType implements Serializable {
@@ -1002,7 +986,51 @@ public final class ResolvableType implements Serializable {
@ -1016,12 +1044,12 @@ public final class ResolvableType implements Serializable {
@@ -1016,12 +1044,12 @@ public final class ResolvableType implements Serializable {
@ -1079,8 +1107,7 @@ public final class ResolvableType implements Serializable {
@@ -1079,8 +1107,7 @@ public final class ResolvableType implements Serializable {
@ -1089,7 +1116,6 @@ public final class ResolvableType implements Serializable {
@@ -1089,7 +1116,6 @@ public final class ResolvableType implements Serializable {