亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

關(guān)于@ConditionalOnProperty的作用及用法說(shuō)明

 更新時(shí)間:2022年06月13日 14:13:18   作者:林先生拆坑日記。  
這篇文章主要介紹了關(guān)于@ConditionalOnProperty的作用及用法說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

@ConditionalOnProperty作用及用法

在spring boot中有時(shí)候需要控制配置類是否生效,可以使用@ConditionalOnProperty注解來(lái)控制@Configuration是否生效.

通過(guò)其兩個(gè)屬性name以及havingValue來(lái)實(shí)現(xiàn)的,其中name用來(lái)從application.properties中讀取某個(gè)屬性值。

  • 如果該值為空,則返回false;
  • 如果值不為空,則將該值與havingValue指定的值進(jìn)行比較,如果一樣則返回true;否則返回false。
  • 如果返回值為false,則該configuration不生效;為true則生效。

例子1

@Configuration
@ConditionalOnProperty(prefix = "filter",name = "loginFilter",havingValue = "true")
public class FilterConfig {
?? ?//prefix為配置文件中的前綴,
?? ?//name為配置的名字
?? ?//havingValue是與配置的值對(duì)比值,當(dāng)兩個(gè)值相同返回true,配置類生效.
? ? @Bean
? ? public FilterRegistrationBean getFilterRegistration() {
? ? ? ? FilterRegistrationBean filterRegistration ?= new FilterRegistrationBean(new LoginFilter());
? ? ? ? filterRegistration.addUrlPatterns("/*");
? ? ? ? return filterRegistration;
? ? }
}

例子2

? ? @Bean
? ? @ConditionalOnProperty(name="spring.redis.host")
? ? RedissonClient redissonSingle() {
? ? ? ? Config config = new Config();
? ? ? ? SingleServerConfig serverConfig = config.useSingleServer()
? ? ? ? ? ? ? ? .setAddress("redis://" + redssionProperties.getHost() + ":" + redssionProperties.getPort())
? ? ? ? ? ? ? ? .setTimeout(redssionProperties.getTimeout())
? ? ? ? ? ? ? ? .setConnectionPoolSize(redssionProperties.getConnectionPoolSize())
? ? ? ? ? ? ? ? .setConnectionMinimumIdleSize(redssionProperties.getConnectionMinimumIdleSize());
? ? ? ? if(StringUtils.isNotBlank(redssionProperties.getPassword())) {
? ? ? ? ? ? serverConfig.setPassword(redssionProperties.getPassword());
? ? ? ? }
? ? ? ? return Redisson.create(config);
? ? }

@ConditionalOnProperty使用注意事項(xiàng)

前幾天使用@ConditionalOnProperty注解配置多個(gè)過(guò)濾器的過(guò)程中碰到了一個(gè)問(wèn)題,在這里記錄下

先簡(jiǎn)單介紹下@ConditionalOnProperty注解的功能吧,之后筆者再描述自身遇到的那些問(wèn)題的時(shí)候,會(huì)更好理解一些

@ConditionalOnProperty的功能

它主要是通過(guò)自身的兩個(gè)屬性來(lái)控制自動(dòng)配置是否生效,這兩個(gè)屬性分別是name、havingValue。只有當(dāng)配置文件(application.properties或者bootstrap.yml)中和name相同的屬性的值和注解上havingValue的值相同時(shí),該配置文件才會(huì)生效,如下方代碼:

配置類

@ConditionalOnProperty(value = "muyichen.auth.test", havingValue = "true")
@Component
public class AuthorizationFilterImpl implements AuthorizationFilter {
?? ?//具體的過(guò)濾邏輯
}

配置文件

muyichen.auth.test=true

使用過(guò)程中遇到的問(wèn)題

當(dāng)筆者嘗試給兩個(gè)以上的過(guò)濾器添加該屬性時(shí),應(yīng)用程序啟動(dòng)報(bào)錯(cuò),如下圖:

***************************
APPLICATION FAILED TO START
***************************

Description:

Parameter 0 of method authorizationFilter in com.muyichen.demo.config.WebConfiguration required a single bean, but 2 were found:

造成這個(gè)問(wèn)題的主要原因是:AuthorizationFilter是筆者自己定義的一個(gè)過(guò)濾器接口,它繼承了Filter接口,但并沒(méi)有做任何實(shí)現(xiàn),當(dāng)servlet開(kāi)始識(shí)別過(guò)濾器時(shí),由于AuthorizationFilter接口并沒(méi)有做主從讀取邏輯的配置,所以servlet無(wú)法判別哪個(gè)是主要的過(guò)濾器配置,當(dāng)幾個(gè)容器間的配置出現(xiàn)沖突時(shí),無(wú)法判別以誰(shuí)為主。

解決辦法

可以給某個(gè)主要的配置類加上@Primary注解來(lái)標(biāo)示出該配置類是主配置類,當(dāng)其它配置類與該類沖突時(shí),以該類為主。這樣就可以解決上述問(wèn)題了

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 使用MQ消息隊(duì)列的優(yōu)缺點(diǎn)詳解

    使用MQ消息隊(duì)列的優(yōu)缺點(diǎn)詳解

    這篇文章主要介紹了使用MQ消息隊(duì)列的優(yōu)缺點(diǎn)詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-07-07
  • Idea進(jìn)行pull的時(shí)候Your local changes would be overwritten by merge.

    Idea進(jìn)行pull的時(shí)候Your local changes would be

    這篇文章主要介紹了Idea進(jìn)行pull的時(shí)候Your local changes would be overwritten by merge.具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • 關(guān)于Spring Bean實(shí)例過(guò)程中使用反射和遞歸處理的Bean屬性填充問(wèn)題

    關(guān)于Spring Bean實(shí)例過(guò)程中使用反射和遞歸處理的Bean屬性填充問(wèn)題

    本文帶領(lǐng)大家一起學(xué)習(xí)下在Spring Bean實(shí)例過(guò)程中如何使用反射和遞歸處理的Bean屬性填充,需要在類 AbstractAutowireCapableBeanFactory 的 createBean 方法中添加補(bǔ)全屬性方法,具體操作方法跟隨小編一起學(xué)習(xí)下吧
    2021-06-06
  • 詳解Java中的有參構(gòu)造方法與無(wú)參構(gòu)造方法

    詳解Java中的有參構(gòu)造方法與無(wú)參構(gòu)造方法

    這篇文章主要詳細(xì)介紹了Java中有參構(gòu)造方法與無(wú)參構(gòu)造方法,文中有詳細(xì)的代碼示例,讓大家清晰明了的了解到有參構(gòu)造方法與無(wú)參構(gòu)造方法、以及應(yīng)用,需要的朋友可以參考下
    2023-06-06
  • 詳解Java中的File文件類以及FileDescriptor文件描述類

    詳解Java中的File文件類以及FileDescriptor文件描述類

    在Java中File類可以用來(lái)新建文件和目錄對(duì)象,而FileDescriptor類則被用來(lái)表示文件或目錄的可操作性,接下來(lái)我們就來(lái)詳解Java中的File文件類以及FileDescriptor文件描述類
    2016-06-06
  • Java讀取txt文件中的數(shù)據(jù)賦給String變量方法

    Java讀取txt文件中的數(shù)據(jù)賦給String變量方法

    今天小編就為大家分享一篇Java讀取txt文件中的數(shù)據(jù)賦給String變量方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-07-07
  • Java多線程執(zhí)行處理業(yè)務(wù)時(shí)間太久解決方法代碼示例

    Java多線程執(zhí)行處理業(yè)務(wù)時(shí)間太久解決方法代碼示例

    這篇文章主要介紹了Java多線程執(zhí)行處理業(yè)務(wù)時(shí)間太久解決方法代碼示例的相關(guān)資料,具有一定借鑒價(jià)值,需要的朋友可以參考下。
    2017-12-12
  • Mybatis-Plus自動(dòng)填充更新操作相關(guān)字段的實(shí)現(xiàn)

    Mybatis-Plus自動(dòng)填充更新操作相關(guān)字段的實(shí)現(xiàn)

    數(shù)據(jù)庫(kù)表中應(yīng)該都要有create_time、update_time字段;那么在開(kāi)發(fā)中,對(duì)于這些共有字段的處理應(yīng)該要進(jìn)行統(tǒng)一,這樣就可以簡(jiǎn)化我們的開(kāi)發(fā)過(guò)程。那么本文就對(duì)Mybatis-Plus中的字段自動(dòng)填充進(jìn)行記錄
    2021-11-11
  • Java實(shí)現(xiàn)英文句子中的單詞順序逆序輸出的方法

    Java實(shí)現(xiàn)英文句子中的單詞順序逆序輸出的方法

    這篇文章主要介紹了Java實(shí)現(xiàn)英文句子中的單詞順序逆序輸出的方法,涉及java字符串遍歷、判斷、截取、輸出等相關(guān)操作技巧,需要的朋友可以參考下
    2018-01-01
  • Javaweb基礎(chǔ)入門HTML之table與form

    Javaweb基礎(chǔ)入門HTML之table與form

    HTML的全稱為超文本標(biāo)記語(yǔ)言,是一種標(biāo)記語(yǔ)言。它包括一系列標(biāo)簽.通過(guò)這些標(biāo)簽可以將網(wǎng)絡(luò)上的文檔格式統(tǒng)一,使分散的Internet資源連接為一個(gè)邏輯整體。HTML文本是由HTML命令組成的描述性文本,HTML命令可以說(shuō)明文字,圖形、動(dòng)畫、聲音、表格、鏈接等
    2022-03-03

最新評(píng)論