为什么要继承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 code>就可以自由自在的根據名字取得
Spring
容器启动时,自动把所有的ApplicationContextAware
实现找出来,然后为其注入ApplicationContext
属性,使得SpringContextUtil
就可以自由自在的根据名字获取Bean
實例了。當你哪裡需要手動取得
Bean
实例时,就可以直接用SpringContextUtil
實例時,就可以直接用SpringContextUtil
類別了啊。如果你們的程式碼裡從來沒用過,那會不是是什麼人一高興,從網路上抄了這麼一段丟到專案裡了,也沒關心是乾嘛用的?
(最後純屬揣測,如有錯誤見諒)