spring-context-support icon indicating copy to clipboard operation
spring-context-support copied to clipboard

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

Open saaserp opened this issue 3 years ago • 0 comments

类路径: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<?>> ,便于多个参数的情况下可以正常装到容器

saaserp avatar Nov 02 '21 13:11 saaserp