最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

@ConditionalOnProperty作用及用法

在spring boot中有時(shí)候需要控制配置類(lèi)是否生效,可以使用@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,配置類(lèi)生效.
? ? @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ì)生效,如下方代碼:

配置類(lèi)

@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í),由于A(yíng)uthorizationFilter接口并沒(méi)有做主從讀取邏輯的配置,所以servlet無(wú)法判別哪個(gè)是主要的過(guò)濾器配置,當(dāng)幾個(gè)容器間的配置出現(xiàn)沖突時(shí),無(wú)法判別以誰(shuí)為主。

解決辦法

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

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

相關(guān)文章

  • 在java中使用dom解析xml的示例分析

    在java中使用dom解析xml的示例分析

    本篇文章介紹了,在java中使用dom解析xml的示例分析。需要的朋友參考下
    2013-05-05
  • java編寫(xiě)猜數(shù)字游戲

    java編寫(xiě)猜數(shù)字游戲

    這篇文章主要為大家詳細(xì)介紹了java編寫(xiě)猜數(shù)字游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-05-05
  • MyBatis-Plus簡(jiǎn)介和快速入門(mén)教程

    MyBatis-Plus簡(jiǎn)介和快速入門(mén)教程

    MyBatis-Plus是一個(gè)MyBatis的增強(qiáng)工具,在MyBatis的基礎(chǔ)上只做增強(qiáng)不做修改,為簡(jiǎn)化開(kāi)發(fā)、提高效率而生,本文給大家介紹MyBatis-Plus簡(jiǎn)介和快速入門(mén)教程,需要的朋友參考下吧
    2021-09-09
  • Spring中存取Bean的相關(guān)注解舉例詳解

    Spring中存取Bean的相關(guān)注解舉例詳解

    這篇文章主要給大家介紹了關(guān)于Spring中存取Bean的相關(guān)注解,在沒(méi)有使用注解獲取對(duì)象之前,我們需要在配置文件中通過(guò)添加bean來(lái)將對(duì)象存儲(chǔ)到Spring容器中,這對(duì)于我們來(lái)說(shuō)是比較麻煩的,需要的朋友可以參考下
    2023-10-10
  • Java?Servlet響應(yīng)httpServletResponse過(guò)程詳解

    Java?Servlet響應(yīng)httpServletResponse過(guò)程詳解

    HttpServletResponse是處理http響應(yīng)的對(duì)象,調(diào)用該對(duì)象的方法,設(shè)置到對(duì)象屬性的內(nèi)容,tomcat最終會(huì)組織為http響應(yīng)報(bào)文
    2022-02-02
  • Feign遠(yuǎn)程調(diào)用丟失請(qǐng)求頭問(wèn)題

    Feign遠(yuǎn)程調(diào)用丟失請(qǐng)求頭問(wèn)題

    本文介紹了在服務(wù)端項(xiàng)目中如何解決資源訪(fǎng)問(wèn)限制問(wèn)題,首先介紹了問(wèn)題的產(chǎn)生,然后詳細(xì)解析了源碼,最后提出了解決方案,解決方案包括同步和異步兩種,同步時(shí)直接向Spring容器注入RequestInterceptor攔截器
    2024-09-09
  • Window搭建部署RocketMQ步驟詳解

    Window搭建部署RocketMQ步驟詳解

    這篇文章主要介紹了Window搭建部署RocketMQ步驟詳解,RocketMq是一個(gè)由阿里巴巴開(kāi)源的消息中間件,脫胎去阿里每部使用的MetaQ,在設(shè)計(jì)上借鑒了Kafka。,需要的朋友可以參考下
    2019-06-06
  • Java實(shí)現(xiàn)一鍵生成表controller,service,mapper文件

    Java實(shí)現(xiàn)一鍵生成表controller,service,mapper文件

    這篇文章主要為大家詳細(xì)介紹了如何利用Java語(yǔ)言實(shí)現(xiàn)一鍵生成表controller,service,mapper文件,文中的示例代碼講解詳細(xì),需要的可以收藏一下
    2023-05-05
  • 詳述 DB2 分頁(yè)查詢(xún)及 Java 實(shí)現(xiàn)的示例

    詳述 DB2 分頁(yè)查詢(xún)及 Java 實(shí)現(xiàn)的示例

    本篇文章主要介紹了詳述 DB2 分頁(yè)查詢(xún)及 Java 實(shí)現(xiàn)的示例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-09-09
  • Spring Boot異步輸出Logback日志方法詳解

    Spring Boot異步輸出Logback日志方法詳解

    這篇文章主要給大家介紹了關(guān)于Spring Boot異步輸出Logback日志的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Spring Boot具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08

最新評(píng)論

泰来县| 潼南县| 巴马| 遵义县| 那曲县| 高邑县| 运城市| 南投县| 德昌县| 达州市| 鹤岗市| 大宁县| 柞水县| 金华市| 石家庄市| 博罗县| 江源县| 西安市| 平度市| 皮山县| 长垣县| 长垣县| 呼图壁县| 呼图壁县| 商城县| 大安市| 扎鲁特旗| 湘阴县| 寿光市| 夏邑县| 婺源县| 泰和县| 鸡西市| 峨山| 永康市| 馆陶县| 竹北市| 曲阳县| 宣威市| 红桥区| 平江县|