Support for shared GroovyClassLoader in GroovyScriptFactory
Exposes setClassLoader method in ConfigurableApplicationContext interface as obvious first-class configuration option. Closes gh-25177
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2002-2019 the original author or authors.
|
||||
* Copyright 2002-2020 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -147,6 +147,15 @@ public interface ConfigurableApplicationContext extends ApplicationContext, Life
|
||||
*/
|
||||
void addApplicationListener(ApplicationListener<?> listener);
|
||||
|
||||
/**
|
||||
* Specify the ClassLoader to load class path resources and bean classes with.
|
||||
* <p>This context class loader will be passed to the internal bean factory.
|
||||
* @since 5.2.7
|
||||
* @see org.springframework.core.io.DefaultResourceLoader#DefaultResourceLoader(ClassLoader)
|
||||
* @see org.springframework.beans.factory.config.ConfigurableBeanFactory#setBeanClassLoader
|
||||
*/
|
||||
void setClassLoader(ClassLoader classLoader);
|
||||
|
||||
/**
|
||||
* Register the given protocol resolver with this application context,
|
||||
* allowing for additional resource protocols to be handled.
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2002-2017 the original author or authors.
|
||||
* Copyright 2002-2020 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -158,7 +158,14 @@ public class GroovyScriptFactory implements ScriptFactory, BeanFactoryAware, Bea
|
||||
|
||||
@Override
|
||||
public void setBeanClassLoader(ClassLoader classLoader) {
|
||||
this.groovyClassLoader = buildGroovyClassLoader(classLoader);
|
||||
if (classLoader instanceof GroovyClassLoader &&
|
||||
(this.compilerConfiguration == null ||
|
||||
((GroovyClassLoader) classLoader).hasCompatibleConfiguration(this.compilerConfiguration))) {
|
||||
this.groovyClassLoader = (GroovyClassLoader) classLoader;
|
||||
}
|
||||
else {
|
||||
this.groovyClassLoader = buildGroovyClassLoader(classLoader);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user