深刻理解SpringBoot的过滤条件--AutoConfigure

     咱们知道在Spring及SpringBoot里按条件建立Bean的核心是Condition接口与Conditional注解,其实在SpringBoot里还有一种AutoConfigure也能够来过滤配置,只不过使用这种技术,可以让SpringBoot更快速的启动,那么下面咱们就来看一下具体怎么实现的。java

autoconfigure Module

     SpringBoot使用一个Annotation的处理器来收集一些自动装配的条件,那么这些条件能够在META-INF/spring-autoconfigure-metadata.properties进行配置。SpringBoot会将收集好的@Configuration进行一次过滤进而剔除不知足条件的配置类。spring

演示示例

     在咱们建立好的SpringBoot项目里添加一个AutoConfiguration:函数

package com.ys.zhshop.member.config;

import com.ys.zhshop.member.service.MemberRegisterService;
import org.springframework.context.annotation.Bean;

public class MemberAutoConfiguration {

    @Bean
    public MemberRegisterService registerService() {
        return new MemberRegisterService();
    }
}

     在MemberRegisterService里的构造函数输出一段内容看看Spring是否帮咱们初始化
     紧接着在META-INF/spring.factories里配置对应的引导:spa

org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
  com.ys.zhshop.member.config.MemberAutoConfiguration

     随后咱们须要在META-INF目录下建立一个spring-autoconfigure-metadata.properties 文件,内容以下:code

com.ys.zhshop.member.config.MemberAutoConfiguration.ConditionalOnClass=java.lang.Strings

     格式:自动配置的类全名.条件=值blog

     在这里咱们先指定一个类路径下不存在的Java类,启动后并无相关信息的输出,那么把其值改为java.land.String,那么咱们启动能够发现:
415409F1_B9A5_4BAA_89EB_59931DCC4A75
     在这里,咱们能够在控制台看到构造函数输出的值,这就说明咱们的Bean的的确确被建立了
     下面我贴出一个spring-cloud-netflix-core下的配置,主要来看看这些条件该怎么写,你们若是想使用能够参考人家的来配置:接口

相关文章
相关标签/搜索