Spring中的@ConditionalOnProperty注解使用詳解
@ConditionalOnProperty
在 spring boot 中有時(shí)候需要控制配置類是否生效,可以使用 @ConditionalOnProperty 注解來控制 @Configuration 是否生效.
示例:
配置類代碼
@AutoConfiguration
@ConditionalOnProperty(prefix = "yudao.tenant", value = "enable", havingValue = true) // 允許使用 yudao.tenant.enable=false 禁用多租戶
@EnableConfigurationProperties(TenantProperties.class)
public class YudaoTenantAutoConfiguration {
xxxxxxxxxxxxxxxx
}配置文件代碼
yudao:
tenant: # 多租戶相關(guān)配置項(xiàng)
enable: true
所以當(dāng)enable=true是,該配置類才會(huì)生效
@ConditionalOnProperty源碼
//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by FernFlower decompiler)
//
package org.springframework.boot.autoconfigure.condition;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import org.springframework.context.annotation.Conditional;
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE, ElementType.METHOD})
@Documented
@Conditional({OnPropertyCondition.class})
public @interface ConditionalOnProperty {
String[] value() default {};
String prefix() default "";
String[] name() default {};
String havingValue() default "";
boolean matchIfMissing() default false;
}havingValue 和 matchIfMissing 區(qū)別
- havingValue: 表示要匹配的屬性值的屬性名。當(dāng)配置文件中該屬性的值為指定的值時(shí),類或方法將被條件注解所影響。如果配置文件中未設(shè)置該屬性,或者屬性值不等于指定的值,則類或方法不會(huì)被條件注解所影響。
- matchIfMissing: 表示在配置文件中未找到該屬性時(shí)是否匹配。默認(rèn)為 false,表示只有在配置文件中設(shè)置了該屬性時(shí)才會(huì)匹配。如果設(shè)置為 true,則即使配置文件中未設(shè)置該屬性,也會(huì)匹配。當(dāng)配置文件中未找到該屬性時(shí),如果 matchIfMissing 為 true,則類或方法將被條件注解所影響;如果 matchIfMissing 為 false,則類或方法不會(huì)被條件注解所影響。
因此,havingValue 和 matchIfMissing 的區(qū)別在于,havingValue 用于指定要匹配的屬性值,而 matchIfMissing 用于控制類或方法是否在屬性未找到時(shí)被條件注解所影響。
到此這篇關(guān)于Spring中的@ConditionalOnProperty注解使用詳解的文章就介紹到這了,更多相關(guān)@ConditionalOnProperty注解內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
RESTful?API設(shè)計(jì)原則與實(shí)現(xiàn)示例詳解
這篇文章主要為大家介紹了RESTful?API設(shè)計(jì)原則與實(shí)現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-04-04
mybatisplus?復(fù)合主鍵(多主鍵)?CRUD示例詳解
這篇文章主要介紹了mybatisplus?復(fù)合主鍵(多主鍵)?CRUD實(shí)例詳解,本文通過實(shí)例代碼圖文相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-03-03
java 中的static關(guān)鍵字和final關(guān)鍵字的不同之處
java 中的static關(guān)鍵字和final關(guān)鍵字的不同之處,需要的朋友可以參考一下2013-03-03
spring中使用mybatis plus連接sqlserver的方法實(shí)現(xiàn)
這篇文章主要介紹了spring中使用mybatis plus連接sqlserver的方法實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12
spring boot-2.1.16整合swagger-2.9.2 含yml配置文件的代碼詳解
這篇文章主要介紹了spring boot-2.1.16整合swagger-2.9.2 含yml配置文件,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-08-08
Java使用BigDecimal公式精確計(jì)算及精度丟失問題
在工作中經(jīng)常會(huì)遇到數(shù)值精度問題,比如說使用float或者double的時(shí)候,可能會(huì)有精度丟失問題,下面這篇文章主要給大家介紹了關(guān)于Java使用BigDecimal公式精確計(jì)算及精度丟失問題的相關(guān)資料,需要的朋友可以參考下2023-01-01

