深刻理解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下的配置,主要來看看這些條件該怎麼寫,你們若是想使用能夠參考人家的來配置:接口

相關文章
相關標籤/搜索