Loading Spring context with specific classloader

自作多情 提交于 2019-11-29 17:26:51

问题


How can I go about loading a Spring context with my own ClassLoader instance?


回答1:


Many Spring Context Loader (for example ClassPathXmlApplicationContext ) are subclass of DefaultResourceLoader.

DefaultResourceLoader has a constructor where you can specify the Classloader and also has a setClassLoader method.

So it is your task to find a constructor of the Spring Context Loader you need, where you can specify the classloader, or just create it, and then use the set to set the classloader you want.




回答2:


    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);

See here if you are doing this for OSGI purposes: How do I use a Spring bean inside an OSGi bundle?




回答3:


The org.springframework.context.support.ClassPathXmlApplicationContext class is here for you.



来源:https://stackoverflow.com/questions/5660115/loading-spring-context-with-specific-classloader

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!