package de.incompleteco.spring.context;
import java.io.File;
import java.net.URL;
import java.net.URLClassLoader;
import org.springframework.beans.factory.xml.XmlBeanDefinitionReader;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.GenericApplicationContext;
import org.springframework.core.io.DefaultResourceLoader;
public class ApplicationContextClassLoader {
public ClassLoader getClassLoader(String location) throws Exception {
File f = new File(location);
return new URLClassLoader(new URL[]{f.toURI().toURL()});
}
public ApplicationContext getContext(String location,String... contextPaths) throws Exception {
return getContext(null,location,contextPaths);
}
public ApplicationContext getContext(ApplicationContext parentContext,String location,String... contextPaths) throws Exception {
//init
GenericApplicationContext context = new GenericApplicationContext();
//build the app context
if (parentContext != null) {
context = new GenericApplicationContext(parentContext);
}//end if
XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(context);
//get the classloader
ClassLoader loader = getClassLoader(location);
//set the loader
reader.setBeanClassLoader(loader);
reader.setResourceLoader(new DefaultResourceLoader(loader));
//get the bean definitions
reader.loadBeanDefinitions(contextPaths);
//init
context.refresh();
//return
return context;
}
}