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

Syn*_*sso 13 spring classloader

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

Ral*_*lph 14

许多Spring Context Loader(例如ClassPathXmlApplicationContext )是DefaultResourceLoader的子类.

DefaultResourceLoader有一个构造函数,您可以在其中指定类加载器并具有setClassLoader方法.

因此,您需要找到所需的Spring Context Loader的构造函数,您可以在其中指定类加载器,或者只是创建它,然后使用该集来设置所需的类加载器.


use*_*141 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);
Run Code Online (Sandbox Code Playgroud)

如果您是出于OSGI目的而这样做,请参阅此处:如何在OSGi包中使用Spring bean?