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; } }
Loading Multiple Spring Application Contexts with their own ClassLoader
猜你喜欢
转载自sunxboy.iteye.com/blog/1904020
今日推荐
周排行