为什么要继承ApplicationContextAware实现ApplicationContext的这些相关方法,感觉这些方法都在spring中有提供的啊,写这个SpringUtil.java工具类有什么用啊?在代码中也没有看到别的地方有对这个工具类的引用??
代码如下:
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.NoSuchBeanDefinitionException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
public class SpringContextUtil implements ApplicationContextAware {
private static ApplicationContext applicationContext; //Spring应用上下文环境
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
SpringContextUtil.applicationContext = applicationContext;
}
public static ApplicationContext getApplicationContext() {
return applicationContext;
}
public static Object getBean(String name) throws BeansException {
return applicationContext.getBean(name);
}
public static <T> T getBean(Class<T> requiredType) {
return applicationContext.getBean(requiredType);
}
public static <T> T getBean(String name, Class<T> requiredType) throws BeansException {
return applicationContext.getBean(name, requiredType);
}
public static boolean containsBean(String name) {
return applicationContext.containsBean(name);
}
public static boolean isSingleton(String name) throws NoSuchBeanDefinitionException {
return applicationContext.isSingleton(name);
}
@SuppressWarnings("rawtypes")
public static Class getType(String name) throws NoSuchBeanDefinitionException {
return applicationContext.getType(name);
}
public static String[] getAliases(String name) throws NoSuchBeanDefinitionException {
return applicationContext.getAliases(name);
}
}
这就是个获取
Bean
实例的工具类,也没什么特别的含义。Spring
容器启动时,自动把所有的ApplicationContextAware
实现找出来,然后为其注入ApplicationContext
属性,使得SpringContextUtil
就可以自由自在的根据名字获取Bean
实例了。当你哪里需要手动获取
Bean
实例时,就可以直接用SpringContextUtil
类了啊。如果你们的代码里从来没用过,那会不是是什么人一高兴,从网上抄了这么一段丢到项目里了,也没关心是干嘛用的?
(最后纯属揣测,如有错误见谅)