QUARTZ使用时请不要用SPRING的GETBEAN,若一定要用就这样用:
public class SpringContextHolder implements ApplicationContextAware
{private static ApplicationContext applicationContext;
public void setApplicationContext(ApplicationContext applicationContext)
throws BeansException
{
SpringContextHolder.applicationContext = applicationContext;
}
/**
* 从静态变量ApplicationContext中取得Bean, 自动转型为所赋值对象的类型.
*/
@SuppressWarnings("unchecked")
public static <T> T getBean(String name){
checkApplicationContext();
return (T)applicationContext.getBean(name);
}
@SuppressWarnings("unchecked")
public static <T> T getBean(Class<T> clazz){
checkApplicationContext();
return (T)applicationContext.getBeansOfType(clazz);
}
/**
* 清除applicationContext静态变量.
*/
public static void cleanApplicationContext(){
applicationContext = null;
}
public static ApplicationContext getApplicationContext(){
checkApplicationContext();
return applicationContext;
}
private static void checkApplicationContext(){
if (applicationContext==null)
{
throw new IllegalStateException("applicaitonContext未注入,请在applicationContext.xml中定义SpringContextHolder");
}
}
}
总之SPRING的XML文件只能初始化一次。