使用特定的类加载器加载Spring上下文

时间:2011-04-14 07:49:18

标签: spring classloader

如何使用我自己的ClassLoader实例加载Spring上下文?

4 个答案:

答案 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)