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

SpringBoot yaml語法與JRS303校驗(yàn)超詳細(xì)講解

 更新時間:2022年10月10日 10:29:09   作者:Decade0712  
YAML 是 “YAML Ain’t Markup Language”(YAML 不是一種標(biāo)記語言)的遞歸縮寫。在開發(fā)的這種語言時,YAML 的意思其實(shí)是:“Yet Another Markup Language”(仍是一種標(biāo)記語言),本文給大家介紹的非常詳細(xì),需要的朋友可以參考下

基本要點(diǎn)

1、properties和yaml文件

properties文件中的配置只支持鍵值對的形式,例如

server.port = 8081

yaml文件可以支持鍵值對、對象、數(shù)組(對空格的要求極其嚴(yán)格)

name: decade
#對象
student:
    name: decade
    age: 21

#對象的行內(nèi)寫法
student: {name: decade,age: 21} 
#數(shù)組
pets:
    - cat
    - dog
    - pig
pets: [cat,dog,pig]

2、給屬性賦值的幾種方式

1)如果使用*.properties作為配置文件,給屬性賦值可以使用@Value

關(guān)鍵注解:@PropertySource+@Value

@PropertySource注解的value需要填關(guān)聯(lián)配置文件的路徑

注意:如果配置文件是application.properties,下面@ConfigurationProperties+@Component的注解也可以獲取配置文件中的配置項(xiàng)

首先我們需要將idea中配置文件的編碼格式改為utf8

然后我們定義一個實(shí)體類,使用EL表達(dá)式引用配置文件中的配置項(xiàng)

package com.decade.pojo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;
@Data
@AllArgsConstructor
@NoArgsConstructor
@Component
@PropertySource("classpath:application.properties")
public class Dog {
    @Value("${dog.name}")
    private String name;
}

2)使用yaml文件給屬性賦值

@Component:將類注冊成容器中的組件(使用configurationProperties的前提)

@ConfigurationProperties:注解可以將類中的屬性和配置文件中的進(jìn)行綁定

該注解的屬性prefix表示要在yaml文件中尋找以改屬性值為開頭的配置項(xiàng)進(jìn)行綁定,例如@ConfigurationProperties(prefix = “people”)

松散綁定:yaml文件中的屬性可以是下劃線連接,實(shí)體類中可以是駝峰命名

例如yaml中是last_name,實(shí)體類中是lastName

package com.decade.pojo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
import java.util.Date;
import java.util.List;
import java.util.Map;
@Data
@AllArgsConstructor
@NoArgsConstructor
@Component
@ConfigurationProperties(prefix = "people")
public class People {
    private String name;
    private Integer age;
    private Boolean isHappy;
    private Date birth;
    private Map<String, Object> maps;
    private List<Object> list;
    private Dog dog;
}

如果添加注解爆紅,那么需要在pom文件中添加一下下面這個依賴

這個依賴可以將我們的實(shí)體類與yaml文件關(guān)聯(lián)起來,這樣我們在yaml文件中進(jìn)行配置配置項(xiàng)時,可以自動聯(lián)想實(shí)體類中的屬性

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-configuration-processor</artifactId>
	<optional>true</optional>
</dependency>

下面是2種方式的配置文件

最后我們寫一個測試類測試一下兩種方式是否導(dǎo)入成功

package com.decade;
import com.decade.pojo.Dog;
import com.decade.pojo.People;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest
class SpringbootStudyApplicationTests {
    @Autowired
    private People people;
    @Autowired
    private Dog dog;
    @Test
    void contextLoads() {
        System.out.println(people);
        System.out.println("========================");
        System.out.println(dog);
    }
}

運(yùn)行結(jié)果如下,驗(yàn)證通過

3、JRS303校驗(yàn)

在日常開發(fā)中,我們經(jīng)常會遇到需要對數(shù)據(jù)進(jìn)行校驗(yàn)的場景,例如非空校驗(yàn)和格式校驗(yàn)

這個時候,JRS303校驗(yàn)就能派上用場,如果數(shù)據(jù)不滿足標(biāo)準(zhǔn),則會統(tǒng)一拋出異常,方便異常中心統(tǒng)一處理

首先,我們需要導(dǎo)入相關(guān)依賴

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-validation</artifactId>
</dependency>

接著,我們在需要校驗(yàn)的屬性所屬的類上使用@Validated注解

在校驗(yàn)的字段上添加相關(guān)注解,常用注解如下

@Null 驗(yàn)證對象是否為null 
@NotNull 驗(yàn)證對象是否不為null, 無法查檢長度為0的字符串 
@NotBlank 檢查約束字符串是不是Null還有被Trim的長度是否大于0,只對字符串,且會去掉前后空格. 
@NotEmpty 檢查約束元素是否為NULL或者是EMPTY.
Booelan檢查 
@AssertTrue 驗(yàn)證 Boolean 對象是否為 true 
@AssertFalse 驗(yàn)證 Boolean 對象是否為 false
長度檢查 
@Size(min=, max=) 驗(yàn)證對象(Array,Collection,Map,String)長度是否在給定的范圍之內(nèi) 
@Length(min=, max=) Validates that the annotated string is between min and max included.
日期檢查 
@Past 驗(yàn)證 Date 和 Calendar 對象是否在當(dāng)前時間之前,驗(yàn)證成立的話被注釋的元素一定是一個過去的日期 
@Future 驗(yàn)證 Date 和 Calendar 對象是否在當(dāng)前時間之后 ,驗(yàn)證成立的話被注釋的元素一定是一個將來的日期 
@Pattern 驗(yàn)證 String 對象是否符合正則表達(dá)式的規(guī)則,被注釋的元素符合制定的正則表達(dá)式,regexp:正則表達(dá)式 flags: 指定 Pattern.Flag 的數(shù)組,表示正則表達(dá)式的相關(guān)選項(xiàng)。
數(shù)值檢查 
建議使用在Stirng,Integer類型,不建議使用在int類型上,因?yàn)楸韱沃禐?ldquo;”時無法轉(zhuǎn)換為int,但可以轉(zhuǎn)換為Stirng為”“,Integer為null 
@Min 驗(yàn)證 Number 和 String 對象是否大等于指定的值 
@Max 驗(yàn)證 Number 和 String 對象是否小等于指定的值 
@DecimalMax 被標(biāo)注的值必須不大于約束中指定的最大值. 這個約束的參數(shù)是一個通過BigDecimal定義的最大值的字符串表示.小數(shù)存在精度 
@DecimalMin 被標(biāo)注的值必須不小于約束中指定的最小值. 這個約束的參數(shù)是一個通過BigDecimal定義的最小值的字符串表示.小數(shù)存在精度 
@Digits 驗(yàn)證 Number 和 String 的構(gòu)成是否合法 
@Digits(integer=,fraction=) 驗(yàn)證字符串是否是符合指定格式的數(shù)字,interger指定整數(shù)精度,fraction指定小數(shù)精度。 
@Range(min=, max=) 被指定的元素必須在合適的范圍內(nèi) 
@Range(min=10000,max=50000,message=”range.bean.wage”) 
@Valid 遞歸的對關(guān)聯(lián)對象進(jìn)行校驗(yàn), 如果關(guān)聯(lián)對象是個集合或者數(shù)組,那么對其中的元素進(jìn)行遞歸校驗(yàn),如果是一個map,則對其中的值部分進(jìn)行校驗(yàn).(是否進(jìn)行遞歸驗(yàn)證) 
@CreditCardNumber信用卡驗(yàn)證 
@Email 驗(yàn)證是否是郵件地址,如果為null,不進(jìn)行驗(yàn)證,算通過驗(yàn)證。 
@ScriptAssert(lang= ,script=, alias=) 
@URL(protocol=,host=, port=,regexp=, flags=)

我們限制People的name屬性不可為空并且在message屬性中自定義錯誤信息

然后在配置文件中將該值設(shè)置為空,運(yùn)行測試類提示如下

注意:

JRS303只可用于@ConfigurationProperties修飾的類

對于@PropertySource+@Value修飾的屬性不生效

如圖所示,我們把dog.name置空,運(yùn)行測試代碼,也不會出現(xiàn)報錯

到此這篇關(guān)于SpringBoot yaml語法與JRS303校驗(yàn)超詳細(xì)講解的文章就介紹到這了,更多相關(guān)SpringBoot yaml語法內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論

广南县| 公主岭市| 青海省| 怀宁县| 云霄县| 兴化市| 平和县| 石首市| 搜索| 江城| 漳浦县| 汾阳市| 马龙县| 衡东县| 惠州市| 尼玛县| 株洲县| 都匀市| 工布江达县| 京山县| 融水| 富平县| 拜城县| 万山特区| 博客| 富民县| 牡丹江市| 大田县| 兴和县| 阿图什市| 铁岭县| 南丹县| 呼玛县| 洪泽县| 徐闻县| 包头市| 西宁市| 旺苍县| 金湖县| 阿拉善左旗| 富蕴县|