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

Spring Boot框架中的@Conditional注解示例詳解

 更新時間:2022年09月14日 10:29:03   作者:Dream_it_possible!  
這篇文章主要介紹了Spring Boot框架中的@Conditional系列注解,@ConditionalOnProperty注解的作用是解析application.yml/application.properties 里的配置生成條件來生效,也是與@Configuration注解一起使用,本文通過示例代碼給大家介紹的非常詳細,需要的朋友一起看看吧

1. @Conditional 注解

@Conditional注解是Spring-context模塊提供了一個注解,該注解的作用是可以根據(jù)一定的條件來使@Configuration注解標記的配置類是否生效,代碼如下:

//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by FernFlower decompiler)
//
 
package org.springframework.context.annotation;
 
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;
 
@Target({ElementType.TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Conditional {
    Class<? extends Condition>[] value();
}

value值為實現(xiàn)Condition 接口的一個Class,Spring框架根據(jù)實現(xiàn)Conditon接口的matches方法返回true或者false來做以下操作,如果matches方法返回true,那么該配置類會被Spring掃描到容器里, 如果為false,那么Spring框架會自動跳過該配置類不進行掃描裝配,使用方法:

實現(xiàn)Condition接口, 例如在配置文件里配置了dataSource.none=true, 那么表示不需要使用數(shù)據(jù)源,那么Spring在掃描的時候會自動跳過該配置類。

package com.bing.sh.datasource;
 
import org.springframework.context.annotation.Condition;
import org.springframework.context.annotation.ConditionContext;
import org.springframework.core.type.AnnotatedTypeMetadata;
 
/**
 * 如果為返回false,那么Spring會忽略配置類
 */
public class DataSourceCondition implements Condition {
    @Override
    public boolean matches(ConditionContext conditionContext, AnnotatedTypeMetadata annotatedTypeMetadata) {
        // 此處使用 conditionContext獲取Environment即可。
        String configureDataSource = conditionContext.getEnvironment().getProperty("dataSource.none", "false");
        return "false".equals(configureDataSource);
    }
}

定義配置類,與@Conditional注解一起使用:

@Configuration
@Conditional(value = DataSourceCondition.class)
public class CustomDataSourceConfig {
}

除了Conditional注解,Spring boot 框架提供了其他conditional系列注解。

2. Spring boot 擴展

SpringBoot的spring-boot-autoconfigure模塊也提供了Conditional系列的相關(guān)注解,這些注解能幫助開發(fā)者根據(jù)一定的條件去裝載需要的Bean。

1) @ConditionalOnClass和@ConditionalOnMissingClass注解

當Spring加載的Bean被@ConditionOnClass注解標記時,類加載器會先去先找到指定的Class, 如果沒有找到目標Class,那么被ConditionOnClass注解標記的類不會被Spring裝載,相反ConditionalOnMissingBean是指如果沒有找到目標Class, 那么就裝載該類。

2) @ConditionalOnBean 和@ConditionalOnMissingBean注解

當Spring加載的Bean被@ConditionalOnBean注解標記時,接下來會先找到指定的Bean,如果沒有找到目標Bean,那么被@ConditionalOnBean標記的類不會被Spring裝載,相反ConditionalOnMissingBean是指如果沒有Class, 那么就裝載該Bean。

3) @ConditionalOnProperty注解

該注解的作用是解析application.yml/application.properties 里的配置生成條件來生效,也是與@Configuration注解一起使用。

屬性

功能

其他

prefix

讀取配置里的前綴值為prefix的屬性, 如果沒有返回false

 

name

讀取屬性配置里的Key值,如果配置了prefix,那么需要先拼接prefix然后匹配havingValue值

 

havingValue

匹配屬性里的值

 

matchIfMissing

當未找到對應的配置時是否匹配,默認為false, 如果為true,沒有找到配置,那么也匹配。

 

使用場景,例如在指定數(shù)據(jù)源時,指定datasource的type。例如包含如下配置使用Hikari數(shù)據(jù)源。

spring.datasource.type=com.zaxxer.hikari.HikariDataSource

在使用時,一般設置matchIfMissing=false, 這樣條件沒有匹配上的話會Spring在掃描bean時會自動跳過該配置類。

到此這篇關(guān)于Spring Boot框架中的@Conditional系列注解的文章就介紹到這了,更多相關(guān)Spring Boot @Conditional注解內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Spring事務Transaction配置的五種注入方式詳解

    Spring事務Transaction配置的五種注入方式詳解

    這篇文章主要介紹了Spring事務Transaction配置的五種注入方式詳解,具有一定的參考價值,感興趣的小伙伴們可以參考一下。
    2017-04-04
  • Maven生成及安裝jar包到本地倉庫的方法

    Maven生成及安裝jar包到本地倉庫的方法

    這篇文章主要介紹了Maven生成及安裝jar包到本地倉庫的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-10-10
  • Java?超詳細講解類的定義方式和對象的實例化

    Java?超詳細講解類的定義方式和對象的實例化

    Java是一門純面向?qū)ο蟮恼Z言(Object?Oriented?Program,繼承OOP),在面對對象的世界里面,一切皆為對象。面向?qū)ο笫墙鉀Q問題的一種思想,主要依靠對象之間的交互完成一件事情
    2022-03-03
  • SpringBoot 并發(fā)登錄人數(shù)控制的實現(xiàn)方法

    SpringBoot 并發(fā)登錄人數(shù)控制的實現(xiàn)方法

    這篇文章主要介紹了SpringBoot 并發(fā)登錄人數(shù)控制的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-05-05
  • Java多線Condition條件變量正確使用方法詳解

    Java多線Condition條件變量正確使用方法詳解

    這篇文章主要為大家,介紹了Java多線Condition條件變量正確使用方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-09-09
  • springboot+webmagic實現(xiàn)java爬蟲jdbc及mysql的方法

    springboot+webmagic實現(xiàn)java爬蟲jdbc及mysql的方法

    今天小編就為大家分享一篇springboot+webmagic實現(xiàn)java爬蟲jdbc及mysql的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-08-08
  • 簡單了解JAVA NIO

    簡單了解JAVA NIO

    這篇文章主要介紹了JAVA NIO的的相關(guān)資料,文中講解非常細致,幫助大家更好的理解和學習,感興趣的朋友可以了解下
    2020-07-07
  • Java基礎:徹底搞懂java多線程

    Java基礎:徹底搞懂java多線程

    篇文章主要介紹了Java多線程的相關(guān)資料,幫助大家更好的理解和學習Java線程相關(guān)知識,感興趣的朋友可以了解下,希望能給你帶來幫助
    2021-08-08
  • Java基礎之動態(tài)代理Cglib詳解

    Java基礎之動態(tài)代理Cglib詳解

    這篇文章主要介紹了Java基礎之動態(tài)代理Cglib詳解,文中有非常詳細的代碼示例,對正在學習java基礎的小伙伴們有非常好的幫助,需要的朋友可以參考下
    2021-05-05
  • springBoot動態(tài)加載jar及如何將類注冊到IOC

    springBoot動態(tài)加載jar及如何將類注冊到IOC

    在SpringBoot項目中動態(tài)加載jar文件并將其類注冊到IOC容器是一種高級應用方式,,這種方法為SpringBoot項目提供了更靈活的擴展能力,使得項目可以在不修改原有代碼的基礎上增加新的功能模塊,感興趣的朋友一起看看吧
    2024-11-11

最新評論

周宁县| 承德县| 三门峡市| 珲春市| 菏泽市| 文登市| 万源市| 板桥市| 丰原市| 泾川县| 呼伦贝尔市| 浦北县| 原阳县| 安远县| 井陉县| 洞口县| 江都市| 尚义县| 宜昌市| 社会| 醴陵市| 庆云县| 巩留县| 峨眉山市| 资溪县| 临汾市| 武定县| 乌拉特前旗| 临泽县| 剑川县| 宣化县| 丰县| 双牌县| 札达县| 商都县| 平邑县| 乌苏市| 鄂托克旗| 南阳市| 苍溪县| 外汇|