生成一个spring工具类 方便在非spring管理环境中获取bean,要求完整所有可能用到的接口,每个接口需要有注释
时间: 2024-05-02 21:17:47 浏览: 93
```java
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Component;
/**
* Spring工具类,用于在非Spring管理环境中获取Bean
*/
@Component
public class SpringContextUtil implements ApplicationContextAware {
private static ApplicationContext applicationContext;
/**
* 设置ApplicationContext,并将其注入静态成员变量applicationContext中
* @param applicationContext Spring应用上下文
* @throws BeansException 异常
*/
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
SpringContextUtil.applicationContext = applicationContext;
}
/**
* 获取Spring应用上下文
* @return Spring应用上下文
*/
public static ApplicationContext getApplicationContext() {
return applicationContext;
}
/**
* 根据bean名称获取bean
* @param name bean名称
* @return bean对象
* @throws BeansException 异常
*/
public static Object getBean(String name) throws BeansException {
return applicationContext.getBean(name);
}
/**
* 根据bean类型获取bean
* @param requiredType bean类型
* @param <T> 泛型
* @return bean对象
* @throws BeansException 异常
*/
public static <T> T getBean(Class<T> requiredType) throws BeansException {
return applicationContext.getBean(requiredType);
}
/**
* 根据bean名称和类型获取bean
* @param name bean名称
* @param requiredType bean类型
* @param <T> 泛型
* @return bean对象
* @throws BeansException 异常
*/
public static <T> T getBean(String name, Class<T> requiredType) throws BeansException {
return applicationContext.getBean(name, requiredType);
}
/**
* 判断Spring应用上下文中是否存在该bean
* @param name bean名称
* @return 存在返回true,否则返回false
*/
public static boolean containsBean(String name) {
return applicationContext.containsBean(name);
}
/**
* 判断该bean是否为单例
* @param name bean名称
* @return 是单例返回true,否则返回false
* @throws NoSuchBeanDefinitionException 异常
*/
public static boolean isSingleton(String name) throws NoSuchBeanDefinitionException {
return applicationContext.isSingleton(name);
}
/**
* 获取该bean的类型
* @param name bean名称
* @return bean类型
* @throws NoSuchBeanDefinitionException 异常
*/
public static Class<?> getType(String name) throws NoSuchBeanDefinitionException {
return applicationContext.getType(name);
}
/**
* 获取该bean的别名
* @param name bean名称
* @return bean别名
* @throws NoSuchBeanDefinitionException 异常
*/
public static String[] getAliases(String name) throws NoSuchBeanDefinitionException {
return applicationContext.getAliases(name);
}
}
```
阅读全文