Browse Source
Add `AutoConfigurationImportFilter` strategy interface which can be used to filter auto-configuration candidates before they are loaded. See gh-7573pull/8038/merge
3 changed files with 183 additions and 11 deletions
@ -0,0 +1,58 @@
@@ -0,0 +1,58 @@
|
||||
/* |
||||
* Copyright 2012-2017 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. |
||||
* You may obtain a copy of the License at |
||||
* |
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
* |
||||
* Unless required by applicable law or agreed to in writing, software |
||||
* distributed under the License is distributed on an "AS IS" BASIS, |
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||
* See the License for the specific language governing permissions and |
||||
* limitations under the License. |
||||
*/ |
||||
|
||||
package org.springframework.boot.autoconfigure; |
||||
|
||||
import org.springframework.beans.factory.BeanClassLoaderAware; |
||||
import org.springframework.beans.factory.BeanFactoryAware; |
||||
import org.springframework.context.EnvironmentAware; |
||||
import org.springframework.context.ResourceLoaderAware; |
||||
|
||||
/** |
||||
* Filter that can be registered in {@code spring.factories} to limit the |
||||
* auto-configuration classes considered. This interface is designed to allow fast removal |
||||
* of auto-configuration classes before their bytecode is even read. |
||||
* <p> |
||||
* An {@link AutoConfigurationImportFilter} may implement any of the following |
||||
* {@link org.springframework.beans.factory.Aware Aware} interfaces, and their respective |
||||
* methods will be called prior to {@link #match}: |
||||
* <ul> |
||||
* <li>{@link EnvironmentAware}</li> |
||||
* <li>{@link BeanFactoryAware }</li> |
||||
* <li>{@link BeanClassLoaderAware }</li> |
||||
* <li>{@link ResourceLoaderAware}</li> |
||||
* </ul> |
||||
* |
||||
* @author Phillip Webb |
||||
* @since 1.5.0 |
||||
*/ |
||||
public interface AutoConfigurationImportFilter { |
||||
|
||||
/** |
||||
* Apply the filter to the given auto-configuration class candidates. |
||||
* @param autoConfigurationClasses the auto-configuration classes being considered. |
||||
* Implementations should not change the values in this array. |
||||
* @param autoConfigurationMetadata access to the meta-data generated by the |
||||
* auto-configure annotation processor |
||||
* @return a boolean array indicating which of the auto-configuration classes should |
||||
* be imported. The returned array must be the same size as the incoming |
||||
* {@code autoConfigurationClasses} parameter. Entries containing {@code false} will |
||||
* not be imported. |
||||
*/ |
||||
boolean[] match(String[] autoConfigurationClasses, |
||||
AutoConfigurationMetadata autoConfigurationMetadata); |
||||
|
||||
} |
||||
Loading…
Reference in new issue