亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

ConditionalOnProperty配置swagger不生效如何解決

發布時間:2022-06-14 14:00:31 來源:億速云 閱讀:713 作者:iii 欄目:開發技術

這篇文章主要介紹“ConditionalOnProperty配置swagger不生效如何解決”,在日常操作中,相信很多人在ConditionalOnProperty配置swagger不生效如何解決問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”ConditionalOnProperty配置swagger不生效如何解決”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

ConditionalOnProperty配置swagger不生效

問題

在正式環境準備關閉Swagger,添加了ConditionalOnProperty注解進行配置,結果發現怎么也無法關閉swagger。

問題原因

@EnableSwagger2在多個地方進行了配置,如下:

1)應用程序處進行了配置

@SpringCloudApplication
@EnableSwagger2  //在應用程序處進行了配置
public class SysApplication {
 
    public static void main(String[] args) {
        SpringApplication.run(SysApplication.class,args);
    }
}

2)swagger處進行了配置

@Configuration
@EnableSwagger2  //在swagger本身配置處進行了配置
@ConditionalOnProperty(value = "swagger.manenabled", havingValue = "true")
public class SwaggerConfig {
}

實際在2)處的配置已經生效,但由于1)處有配置所以造成這個問題。

解決方案

將1)處的配置關閉即可。

@ConditionalOnProperty理解和使用

在Spring應用程序開發的過程中,可能需要根據配置屬性的存在和值有條件地創建一些bean,@ConditionalOnProperty注解用于僅在環境屬性存在且具有特定值時才啟用 bean 注冊。

注解源碼

@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE, ElementType.METHOD})
@Documented
@Conditional({OnPropertyCondition.class})
public @interface ConditionalOnProperty {
//獲取對應property名稱的值,與name不可同時使用
    String[] value() default {};
 
//配置屬性名稱的前綴
    String prefix() default "";
 
//配置屬性完整名稱或部分名稱
//可與prefix組合使用,組成完整的配置屬性名稱,與value不可同時使用
    String[] name() default {};
 
//可與name組合使用,比較獲取到的屬性值與havingValue給定的值是否相同,相同才加載配置
    String havingValue() default "";
 
//缺少該配置屬性時是否可以加載。如果為true,沒有該配置屬性時也會正常加載;反之則不會生效
    boolean matchIfMissing() default false;
}

value以及 prefix + name 決定屬性值(Property Value),以下為匹配規則

ConditionalOnProperty配置swagger不生效如何解決

解析:假如havingValue為空,

  • 屬性值為boolean類型,則屬性值為true 加載該bean,屬性值為false 不加載該bean。

  • 如果屬性值不為boolean類型,則有該屬性 則加載bean,沒有該屬性則不加載。

示例

屬性值不是boolean類型的情況

@Bean(name = "emailNotification")
@ConditionalOnProperty(prefix = "notification", name = "service")
public NotificationSender notificationSender() {
    return new EmailNotification();
}

如果配置該屬性則加載:

notification.service=email

屬性值為boolean類型

@Bean(name = "emailNotification")
@ConditionalOnProperty(prefix = "notification", name = "enable")
public NotificationSender notificationSender() {
    return new EmailNotification();
}

如果配置為true則加載

notification.enable=true

如果缺失或為false則不加載

到此,關于“ConditionalOnProperty配置swagger不生效如何解決”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

镇巴县| 滦南县| 惠来县| 平原县| 法库县| 玉树县| 富锦市| 雅江县| 阿克| 沁阳市| 广河县| 霍州市| 渝中区| 土默特左旗| 天门市| 万年县| 长海县| 稷山县| 汾西县| 新竹市| 班玛县| 布拖县| 河南省| 北辰区| 宣威市| 乐陵市| 安吉县| 墨竹工卡县| 甘洛县| 安图县| 佛坪县| 虎林市| 永昌县| 西乌珠穆沁旗| 淳安县| 贵阳市| 忻州市| 丽水市| 海南省| 盐源县| 白玉县|