[ACCEPTED]-Loading Spring context with specific classloader-classloader
Many Spring Context Loader (for example 7 ClassPathXmlApplicationContext ) are subclass of DefaultResourceLoader.
DefaultResourceLoader
has a constructor where you can 6 specify the Classloader and also has a setClassLoader
method.
So 5 it is your task to find a constructor of 4 the Spring Context Loader you need, where 3 you can specify the classloader, or just 2 create it, and then use the set to set the 1 classloader you want.
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 1 purposes: How do I use a Spring bean inside an OSGi bundle?
The org.springframework.context.support.ClassPathXmlApplicationContext
class is here for you.
0
People who are using spring boot and wants 2 to use custom classloader to create application 1 context can do it like this:
@SpringBootApplication
public class Application
{
public static void main(String[] args) {
SpringApplication app =
new SpringApplication(Application.class);
ResourceLoader resourceLoader = new DefaultResourceLoader();
YourClassLoaderObject yourClassLoaderObject = new YourClassLoaderObject();
((DefaultResourceLoader)resourceLoader).setClassLoader(yourClassLoaderObject);
app.setResourceLoader(resourceLoader);
context = app.run(args);
}
}
More Related questions
We use cookies to improve the performance of the site. By staying on our site, you agree to the terms of use of cookies.