原理springboot4自動構成(浅いです)

(浅い)の自動設定の原則

@Configuration      //这是一个配置类
@EnableConfigurationProperties(HttpProperties.class)//启用ConfigurationProperties功能,将配置文件中的值和httpproperties绑定起来,加入到容器中
@ConditionalOnWebApplication(type = ConditionalOnWebApplication.Type.SERVLET)//根据不同的条件来判断是不是生效
@ConditionalOnClass(CharacterEncodingFilter.class)//判断当前项目有没有这个类,乱码过滤器

@ConditionalOnProperty(prefix = "spring.http.encoding", value = "enabled", matchIfMissing = true) //判断配置文件是否存在某些配置;默认已经注入了这些值,不配置也是默认生效的

public class HttpEncodingAutoConfiguration {

    private final HttpProperties.Encoding properties;

    //只有一个有参构造器的时候,从容器中获取
    public HttpEncodingAutoConfiguration(HttpProperties properties) {
        this.properties = properties.getEncoding();
    }
    @Bean//这个组件的某些值需要在properties文件取得
    @ConditionalOnMissingBean
    public CharacterEncodingFilter characterEncodingFilter() {
        CharacterEncodingFilter filter = new OrderedCharacterEncodingFilter();
        filter.setEncoding(this.properties.getCharset().name());
        filter.setForceRequestEncoding(this.properties.shouldForce(Type.REQUEST));
        filter.setForceResponseEncoding(this.properties.shouldForce(Type.RESPONSE));
        return filter;
    }

構成することができ、構成ファイル内のすべての属性は、クラスにカプセル化されているxxxxProperties

@ConfigurationProperties(prefix = "spring.http")//从配置文件中获取值与属性绑定
public class HttpProperties {

    /**
     * Configuration properties for http encoding.
     */
    public static class Encoding {

        public static final Charset DEFAULT_CHARSET = StandardCharsets.UTF_8;

自動コンフィギュレーションクラスxxxxAutoConfiguration

xxxxPropertiesプロパティの設定情報ファイルパッケージ

@Conditionalは、ノートの多くは、派生コメントをspringbootがあるかを決定するために使用しました

@ConditionaOnBean

@ConditionaOnMissingBean

...

自動コンフィギュレーションクラスの条件の後== ==有効になります

debug=true #可以打印很多信息,能够查看哪个自动配置类是生效的

おすすめ

転載: www.cnblogs.com/lovestart/p/11220429.html