如何使用我自己的ClassLoader
实例加载Spring上下文?
答案 0 :(得分:14)
许多Spring Context Loader(例如ClassPathXmlApplicationContext )是DefaultResourceLoader的子类。
DefaultResourceLoader
有一个constructor,您可以在其中指定类加载器并使用setClassLoader
方法。
因此,您需要找到所需的Spring Context Loader的构造函数,您可以在其中指定类加载器,或者只是创建它,然后使用该集来设置所需的类加载器。
答案 1 :(得分:6)
final ClassLoader properClassLoader = YourClass.class.getClassLoader();
appContext = new ClassPathXmlApplicationContext("application-context.xml") {
protected void initBeanDefinitionReader(XmlBeanDefinitionReader reader) {
super.initBeanDefinitionReader(reader);
reader.setValidationMode(XmlBeanDefinitionReader.VALIDATION_NONE);
reader.setBeanClassLoader(properClassLoader);
setClassLoader(properClassLoader);
如果您是出于OSGI目的而执行此操作,请参阅此处:How do I use a Spring bean inside an OSGi bundle?
答案 2 :(得分:0)
org.springframework.context.support.ClassPathXmlApplicationContext
课程就在这里。
答案 3 :(得分:0)
正在使用 spring boot 并希望使用自定义类加载器创建应用程序上下文的人可以这样做:
(_:x)