您好,登錄后才能下訂單哦!
這篇文章主要介紹“ConditionalOnProperty配置swagger不生效如何解決”,在日常操作中,相信很多人在ConditionalOnProperty配置swagger不生效如何解決問(wèn)題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”ConditionalOnProperty配置swagger不生效如何解決”的疑惑有所幫助!接下來(lái),請(qǐng)跟著小編一起來(lái)學(xué)習(xí)吧!
在正式環(huán)境準(zhǔn)備關(guān)閉Swagger,添加了ConditionalOnProperty注解進(jìn)行配置,結(jié)果發(fā)現(xiàn)怎么也無(wú)法關(guān)閉swagger。
@EnableSwagger2在多個(gè)地方進(jìn)行了配置,如下:
1)應(yīng)用程序處進(jìn)行了配置
@SpringCloudApplication @EnableSwagger2 //在應(yīng)用程序處進(jìn)行了配置 public class SysApplication { public static void main(String[] args) { SpringApplication.run(SysApplication.class,args); } }
2)swagger處進(jìn)行了配置
@Configuration @EnableSwagger2 //在swagger本身配置處進(jìn)行了配置 @ConditionalOnProperty(value = "swagger.manenabled", havingValue = "true") public class SwaggerConfig { }
實(shí)際在2)處的配置已經(jīng)生效,但由于1)處有配置所以造成這個(gè)問(wèn)題。
將1)處的配置關(guān)閉即可。
在Spring應(yīng)用程序開(kāi)發(fā)的過(guò)程中,可能需要根據(jù)配置屬性的存在和值有條件地創(chuàng)建一些bean,@ConditionalOnProperty注解用于僅在環(huán)境屬性存在且具有特定值時(shí)才啟用 bean 注冊(cè)。
@Retention(RetentionPolicy.RUNTIME) @Target({ElementType.TYPE, ElementType.METHOD}) @Documented @Conditional({OnPropertyCondition.class}) public @interface ConditionalOnProperty { //獲取對(duì)應(yīng)property名稱的值,與name不可同時(shí)使用 String[] value() default {}; //配置屬性名稱的前綴 String prefix() default ""; //配置屬性完整名稱或部分名稱 //可與prefix組合使用,組成完整的配置屬性名稱,與value不可同時(shí)使用 String[] name() default {}; //可與name組合使用,比較獲取到的屬性值與havingValue給定的值是否相同,相同才加載配置 String havingValue() default ""; //缺少該配置屬性時(shí)是否可以加載。如果為true,沒(méi)有該配置屬性時(shí)也會(huì)正常加載;反之則不會(huì)生效 boolean matchIfMissing() default false; }
value以及 prefix + name 決定屬性值(Property Value),以下為匹配規(guī)則
解析:假如havingValue為空,
屬性值為boolean類型,則屬性值為true 加載該bean,屬性值為false 不加載該bean。
如果屬性值不為boolean類型,則有該屬性 則加載bean,沒(méi)有該屬性則不加載。
示例
@Bean(name = "emailNotification") @ConditionalOnProperty(prefix = "notification", name = "service") public NotificationSender notificationSender() { return new EmailNotification(); }
如果配置該屬性則加載:
notification.service=email
@Bean(name = "emailNotification") @ConditionalOnProperty(prefix = "notification", name = "enable") public NotificationSender notificationSender() { return new EmailNotification(); }
如果配置為true則加載
notification.enable=true
如果缺失或?yàn)閒alse則不加載
到此,關(guān)于“ConditionalOnProperty配置swagger不生效如何解決”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注億速云網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)?lái)更多實(shí)用的文章!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。