|
|
package com.smart.common.util;
|
|
|
|
|
|
import org.springframework.beans.BeansException;
|
|
|
import org.springframework.beans.factory.NoSuchBeanDefinitionException;
|
|
|
import org.springframework.beans.factory.config.BeanFactoryPostProcessor;
|
|
|
import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
|
|
|
import org.springframework.stereotype.Component;
|
|
|
|
|
|
/**
|
|
|
* 工具类
|
|
|
*/
|
|
|
@Component
|
|
|
public final class SpringUtils implements BeanFactoryPostProcessor {
|
|
|
|
|
|
/**
|
|
|
* Spring应用上下文环境的 Bean 工厂
|
|
|
*/
|
|
|
private static ConfigurableListableBeanFactory beanFactory;
|
|
|
|
|
|
@Override
|
|
|
public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory)
|
|
|
throws BeansException {
|
|
|
SpringUtils.beanFactory = beanFactory;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 获取对象
|
|
|
*
|
|
|
* @param name Bean 的名称
|
|
|
* @return Object 对应名称的 Bean 实例
|
|
|
* @throws org.springframework.beans.BeansException
|
|
|
*/
|
|
|
@SuppressWarnings("unchecked")
|
|
|
public static <T> T getBean(String name) throws BeansException {
|
|
|
return (T) beanFactory.getBean(name);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 获取类型为 requiredType 的对象
|
|
|
*
|
|
|
* @param clz Bean 的类型
|
|
|
* @return 对应类型的 Bean 实例
|
|
|
* @throws org.springframework.beans.BeansException
|
|
|
*/
|
|
|
public static <T> T getBean(Class<T> clz) throws BeansException {
|
|
|
@SuppressWarnings("unchecked")
|
|
|
T result = (T) beanFactory.getBean(clz);
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 判断 Bean 工厂中是否包含给定名称的 Bean
|
|
|
*
|
|
|
* @param name Bean 的名称
|
|
|
* @return boolean 如果包含给定名称的 Bean,则返回 true
|
|
|
*/
|
|
|
public static boolean containsBean(String name) {
|
|
|
return beanFactory.containsBean(name);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 判断给定名称的 Bean 是否是单例
|
|
|
*
|
|
|
* @param name Bean 的名称
|
|
|
* @return boolean 如果指定名称的 Bean 是单例,则返回 true
|
|
|
* @throws org.springframework.beans.factory.NoSuchBeanDefinitionException
|
|
|
*/
|
|
|
public static boolean isSingleton(String name) throws NoSuchBeanDefinitionException {
|
|
|
return beanFactory.isSingleton(name);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 获取给定名称的 Bean 的类型
|
|
|
*
|
|
|
* @param name Bean 的名称
|
|
|
* @return Class 注册对象的类型
|
|
|
* @throws org.springframework.beans.factory.NoSuchBeanDefinitionException
|
|
|
*/
|
|
|
public static Class<?> getType(String name) throws NoSuchBeanDefinitionException {
|
|
|
return beanFactory.getType(name);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 获取给定名称的 Bean 的别名
|
|
|
*
|
|
|
* @param name Bean 的名称
|
|
|
* @return String[] Bean 的别名数组
|
|
|
* @throws org.springframework.beans.factory.NoSuchBeanDefinitionException
|
|
|
*/
|
|
|
public static String[] getAliases(String name) throws NoSuchBeanDefinitionException {
|
|
|
return beanFactory.getAliases(name);
|
|
|
}
|
|
|
|
|
|
}
|