Browse Source

Add: SpringUtil.getBean(TypeReference<T>)
添加Spring工具类静态方法,通过类型参考(TypeReference)获取带泛型参数的Bean,同时添加了一个小的单元测试

dejavuhuh 5 years ago
parent
commit
04dd1d67d5

+ 1 - 3
hutool-extra/src/main/java/cn/hutool/extra/spring/SpringUtil.java

@@ -1,6 +1,5 @@
 package cn.hutool.extra.spring;
 package cn.hutool.extra.spring;
 
 
-import cn.hutool.core.lang.ParameterizedTypeImpl;
 import cn.hutool.core.lang.TypeReference;
 import cn.hutool.core.lang.TypeReference;
 import cn.hutool.core.util.ArrayUtil;
 import cn.hutool.core.util.ArrayUtil;
 import org.springframework.context.ApplicationContext;
 import org.springframework.context.ApplicationContext;
@@ -9,7 +8,6 @@ import org.springframework.core.ResolvableType;
 import org.springframework.stereotype.Component;
 import org.springframework.stereotype.Component;
 
 
 import java.lang.reflect.ParameterizedType;
 import java.lang.reflect.ParameterizedType;
-import java.lang.reflect.Type;
 import java.util.Arrays;
 import java.util.Arrays;
 import java.util.Map;
 import java.util.Map;
 
 
@@ -92,7 +90,7 @@ public class SpringUtil implements ApplicationContextAware {
 		Class<T> rawType = (Class<T>) parameterizedType.getRawType();
 		Class<T> rawType = (Class<T>) parameterizedType.getRawType();
 		Class<?>[] genericTypes = Arrays.stream(parameterizedType.getActualTypeArguments()).map(type -> (Class<?>) type).toArray(Class[]::new);
 		Class<?>[] genericTypes = Arrays.stream(parameterizedType.getActualTypeArguments()).map(type -> (Class<?>) type).toArray(Class[]::new);
 		String[] beanNames = applicationContext.getBeanNamesForType(ResolvableType.forClassWithGenerics(rawType, genericTypes));
 		String[] beanNames = applicationContext.getBeanNamesForType(ResolvableType.forClassWithGenerics(rawType, genericTypes));
-		return applicationContext.getBean(beanNames[0], rawType);
+		return getBean(beanNames[0], rawType);
 	}
 	}
 
 
 	/**
 	/**

+ 0 - 2
hutool-extra/src/test/java/cn/hutool/extra/spring/SpringUtilTest.java

@@ -10,9 +10,7 @@ import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Bean;
 import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
 import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
 
 
-import java.lang.reflect.Type;
 import java.util.HashMap;
 import java.util.HashMap;
-import java.util.LinkedHashMap;
 import java.util.Map;
 import java.util.Map;
 
 
 @RunWith(SpringJUnit4ClassRunner.class)
 @RunWith(SpringJUnit4ClassRunner.class)