Rumah > Soal Jawab > teks badan
为什么要继承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);
}
}
怪我咯2017-04-18 09:27:56
Ini ialah kelas alat untuk mendapatkan Bean
tika, dan ia tidak mempunyai makna istimewa.
Spring
bermula, ia secara automatik mencari semua ApplicationContextAware
pelaksanaan dan menyuntik atribut ApplicationContext
ke dalamnya, supaya SpringContextUtil
boleh mendapatkan Bean
kejadian secara bebas berdasarkan nama mereka.
Apabila anda perlu mendapatkan contoh Bean
secara manual, anda boleh terus menggunakan kelas SpringContextUtil
.
Jika ia tidak pernah digunakan dalam kod anda, adakah mungkin seseorang sangat gembira sehingga mereka menyalin perenggan ini dari Internet dan melemparkannya ke dalam projek tanpa mengambil berat tentang kegunaannya?
(Yang terakhir adalah spekulasi semata-mata, maaf jika ada kesilapan)