为什么要继承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);
}
}
This is just a tool class for obtaining
Bean
instances, and it has no special meaning.When the
Spring
container starts, it automatically finds all theApplicationContextAware
implementations, and then injects theApplicationContext
attribute into them, makingSpringContextUtil
code> you can freely obtain theSpring
容器启动时,自动把所有的ApplicationContextAware
实现找出来,然后为其注入ApplicationContext
属性,使得SpringContextUtil
就可以自由自在的根据名字获取Bean
instance based on the name.When you need to manually obtain the
Bean
实例时,就可以直接用SpringContextUtil
instance, you can directly use theSpringContextUtil
class.If you have never used it in your code, is it possible that someone was so happy that they copied this paragraph from the Internet and threw it into the project without caring about what it was used for?
(The last one is purely speculation, sorry if there are any mistakes)