add method

This commit is contained in:
Looly 2020-08-10 10:06:23 +08:00
parent cc522903b9
commit 18523dd60f
2 changed files with 23 additions and 20 deletions

View File

@ -18,6 +18,7 @@
* 【poi 】 closeAfterRead参数无效方法设为过期issue#1007@Github * 【poi 】 closeAfterRead参数无效方法设为过期issue#1007@Github
* 【core 】 CollUtil中部分方法返回null变更为返回empty * 【core 】 CollUtil中部分方法返回null变更为返回empty
* 【all 】 添加英文READMEpr#153@Gitee * 【all 】 添加英文READMEpr#153@Gitee
* 【extra 】 SpringUtil增加getBean(TypeReference)pr#1009@Github
### Bug修复# ### Bug修复#
* 【core 】 修复原始类型转换时,转换失败没有抛出异常的问题 * 【core 】 修复原始类型转换时,转换失败没有抛出异常的问题

View File

@ -83,13 +83,14 @@ public class SpringUtil implements ApplicationContextAware {
* @param reference 类型参考用于持有转换后的泛型类型 * @param reference 类型参考用于持有转换后的泛型类型
* @param <T> Bean类型 * @param <T> Bean类型
* @return 带泛型参数的Bean * @return 带泛型参数的Bean
* @since 5.4.0
*/ */
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
public static <T> T getBean(TypeReference<T> reference) { public static <T> T getBean(TypeReference<T> reference) {
ParameterizedType parameterizedType = (ParameterizedType) reference.getType(); final ParameterizedType parameterizedType = (ParameterizedType) reference.getType();
Class<T> rawType = (Class<T>) parameterizedType.getRawType(); final Class<T> rawType = (Class<T>) parameterizedType.getRawType();
Class<?>[] genericTypes = Arrays.stream(parameterizedType.getActualTypeArguments()).map(type -> (Class<?>) type).toArray(Class[]::new); final Class<?>[] genericTypes = Arrays.stream(parameterizedType.getActualTypeArguments()).map(type -> (Class<?>) type).toArray(Class[]::new);
String[] beanNames = applicationContext.getBeanNamesForType(ResolvableType.forClassWithGenerics(rawType, genericTypes)); final String[] beanNames = applicationContext.getBeanNamesForType(ResolvableType.forClassWithGenerics(rawType, genericTypes));
return getBean(beanNames[0], rawType); return getBean(beanNames[0], rawType);
} }
@ -101,17 +102,18 @@ public class SpringUtil implements ApplicationContextAware {
* @return 类型对应的beankey是bean注册的namevalue是Bean * @return 类型对应的beankey是bean注册的namevalue是Bean
* @since 5.3.3 * @since 5.3.3
*/ */
public static <T> Map<String, T> getBeansOfType(Class<T> type){ public static <T> Map<String, T> getBeansOfType(Class<T> type) {
return applicationContext.getBeansOfType(type); return applicationContext.getBeansOfType(type);
} }
/** /**
* 获取指定类型对应的Bean名称包括子类 * 获取指定类型对应的Bean名称包括子类
*
* @param type 接口null表示获取所有bean名称 * @param type 接口null表示获取所有bean名称
* @return bean名称 * @return bean名称
* @since 5.3.3 * @since 5.3.3
*/ */
public static String[] getBeanNamesForType(Class<?> type){ public static String[] getBeanNamesForType(Class<?> type) {
return applicationContext.getBeanNamesForType(type); return applicationContext.getBeanNamesForType(type);
} }
@ -132,7 +134,7 @@ public class SpringUtil implements ApplicationContextAware {
* @return 当前的环境配置 * @return 当前的环境配置
* @since 5.3.3 * @since 5.3.3
*/ */
public static String[] getActiveProfiles(){ public static String[] getActiveProfiles() {
return applicationContext.getEnvironment().getActiveProfiles(); return applicationContext.getEnvironment().getActiveProfiles();
} }
@ -142,7 +144,7 @@ public class SpringUtil implements ApplicationContextAware {
* @return 当前的环境配置 * @return 当前的环境配置
* @since 5.3.3 * @since 5.3.3
*/ */
public static String getActiveProfile(){ public static String getActiveProfile() {
final String[] activeProfiles = getActiveProfiles(); final String[] activeProfiles = getActiveProfiles();
return ArrayUtil.isNotEmpty(activeProfiles) ? activeProfiles[0] : null; return ArrayUtil.isNotEmpty(activeProfiles) ? activeProfiles[0] : null;
} }