alibaba / spring-context-support

An internal support project for spring-context in Alibaba
Apache License 2.0
150 stars 83 forks source link

AbstractAnnotationBeanPostProcessor无法装载含有多个参数的类问题 #48

Open saaserp opened 2 years ago

saaserp commented 2 years ago

类路径:com.alibaba.spring.beans.factory.annotation.AbstractAnnotationBeanPostProcessor 方法: private Class<?> resolveInjectedType(Object bean, Field field) { Type genericType = field.getGenericType(); if (genericType instanceof Class) { // Just a normal Class return field.getType(); } else { // GenericType return resolveTypeArgument(getTargetClass(bean), field.getDeclaringClass()); } } @Nullable public static Class<?> resolveTypeArgument(Class<?> clazz, Class<?> genericIfc) { ResolvableType resolvableType = ResolvableType.forClass(clazz).as(genericIfc); if (!resolvableType.hasGenerics()) { return null; } return getSingleGeneric(resolvableType); } resolveTypeArgument 遇到一个类有多个参数的时候,会导致报错; 建议resolveInjectedType返回类型为List<Class<?>> ,便于多个参数的情况下可以正常装到容器