Add AutoConfigurationImportFilter support
Add `AutoConfigurationImportFilter` strategy interface which can be used to filter auto-configuration candidates before they are loaded. See gh-7573pull/8038/merge
parent
02641a8207
commit
20a20b7711
@ -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