一、為什麼會想到定義@SpringCloudProfile這樣的注解
首頁提一下@Profile注解:它主要用與Spring Boot多環境配置中,指定某個類隻在指定環境中生效,比如swagger的配置隻允許開發和測試環境開發,線上需要禁止使用。
使用@Profile進行如下配置:
但是在Spring Cloud中由于使用了配置中心,導緻啟動項目時沒有指定spring.profiles.active屬性導緻@Profile注解失效,原因就是@Profile通過擷取環境變量中spring.profiles.active屬性值,與注解中設定的值進行比較,包含就生效。
所有在Spring Cloud中需要換一個環境變量來實作,正好有spring.cloud.config.profile這個變量,該變量用于指定讀取配置中心那個環境配置的,一般有這些值,dev、test、prod
二、自定義@SpringCloudProfile注解的實作
1)定義@SpringCloudProfile注解
2)實作SpringCloudProfileCondition類,用于條件比對
你投入得越多,就能得到越多得價值