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