要想成功实现该效果,主要步骤有三步:
1.新建springcontextutil类继承applicationcontextaware
2.spring bean配置文件加入该类
3.通过调用类名调用service
直接上代码
@Component
public class SpringContextUtil implements ApplicationContextAware {
private static ApplicationContext applicationContext;
@Override
public void setApplicationContext(ApplicationContext arg0) throws BeansException {
// TODO Auto-generated method stub
SpringContextUtil.applicationContext = arg0;
}
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> class1) {
// TODO Auto-generated method stub
return (T) applicationContext.getBean(class1);
}
public static <T> T getBeanByName(Class<T> clazz) throws BeansException {
try {
char[] cs = clazz.getSimpleName().toCharArray();
cs[0] += 32;
return (T) applicationContext.getBean(String.valueOf(cs));
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
public static boolean containsBean(String name) {
return applicationContext.containsBean(name);
}
public static boolean isSingleton(String name) throws NoSuchBeanDefinitionException {
return applicationContext.isSingleton(name);
}
}
配置文件
<bean id = "SpringApplicationContext" class = "XXXXX" />
调用
animalService = (animalService ) SpringContextUtil.getBean(animalService .class);
注意:
1.SpringContextUtil 类中一定要有通过类名找到文件的方法,否则spring将加载不到service。
2.SpringContextUtil 类需要@Component注解修饰