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

SpringBoot屬性綁定與bean屬性校驗(yàn)實(shí)現(xiàn)方法詳解

 更新時間:2022年11月15日 14:03:56   作者:CN丶1  
這篇文章主要介紹了SpringBoot屬性綁定與bean屬性校驗(yàn)實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧

屬性綁定

屬性綁定:我們可以使用配置文件對類的屬性進(jìn)行賦值綁定。

自定義類屬性綁定

我們自定義一個類,在此使用yml文件進(jìn)行類屬性的綁定。

屬性綁定步驟:

1.創(chuàng)建一個類,設(shè)置字段。

public class ServiceConfig {
    private int prot;
    private String ipAddress;
    private long timeOut;

2.添加注解

@Component
@Data
@ConfigurationProperties(prefix = "servers")
public class ServiceConfig {
    private int prot;
    private String ipAddress;
    private long timeOut;

注解說明:

@Component:將此類加入Spring容器。

@Data:使用lombok快速創(chuàng)建實(shí)體類。

@ConfigurationProperties:聲明此類使用配置文件進(jìn)行屬性綁定,

并且設(shè)置使用配置文件中的哪個數(shù)據(jù)。

3.配置文件設(shè)置數(shù)據(jù)

4.測試:在boot引導(dǎo)類中

@SpringBootApplication
public class SpringBootDemo2Application {
    public static void main(String[] args) {
        ConfigurableApplicationContext context = SpringApplication.run(SpringBootDemo2Application.class, args);
//獲取自定義類
        ServiceConfig bean = context.getBean(ServiceConfig.class);
//打印獲取的bean,查看是否成功綁定屬性
        System.out.println(bean);
    }
}

測試結(jié)果: 發(fā)現(xiàn)打印出來的數(shù)據(jù)就是我們在yml中設(shè)置的數(shù)據(jù)

第三方bean屬性匹配

說明:有時候我們的需求并不只是想要給我們自己的類進(jìn)行屬性綁定,還需要給第三方的bean進(jìn)行屬性綁定。

在此使用DruidDataSource作為第三方bean,為此bean進(jìn)行屬性綁定。

將Druid加入spring容器。(操作前提是導(dǎo)入了Druid坐標(biāo))

@Bean
@ConfigurationProperties(prefix = "datasource")
public DruidDataSource dataSource(){
    DruidDataSource druid = new DruidDataSource();
    return druid;
}

yml文件中進(jìn)行屬性綁定

datasource:
  username: root
  password: root
  driverClassName: com.mysql.cj.jdbc.Driver
  url: jdbc:mysql://localhost:3306/test

測試:打印第三方bean的配置數(shù)據(jù)到控制臺看效果

@SpringBootApplication
public class SpringBootDemo2Application {
    @Bean
    @ConfigurationProperties(prefix = "datasource")
    public DruidDataSource dataSource(){
        DruidDataSource druid = new DruidDataSource();
        return druid;
    }
    public static void main(String[] args) {
        ConfigurableApplicationContext context = SpringApplication.run(SpringBootDemo2Application.class, args);
        DruidDataSource bean = context.getBean(DruidDataSource.class);
        System.out.println(bean.getUsername());
        System.out.println(bean.getPassword());
        System.out.println(bean.getUrl());
        System.out.println(bean.getDriverClassName());
    }
}

測試結(jié)果:

規(guī)則-松散綁定(寬松綁定)

寬松綁定是一種特性,說的是在配置文件中的綁定屬性的數(shù)據(jù)時,屬性名的書寫規(guī)定很寬松。

松散綁定的規(guī)則:忽略標(biāo)點(diǎn)符號,將所有字母轉(zhuǎn)為小寫

特點(diǎn):匹配規(guī)則很寬松。

舉例:屬性綁定,在配置文件中設(shè)置多種屬性名進(jìn)行匹配。

我們配置類的ipAddress屬性,查看在配置文件中書寫屬性的多種形式。

需要設(shè)置的屬性:

配置文件中進(jìn)行屬性綁定:

說明:上面的方式,均可以對屬性進(jìn)行綁定,并未列出所有。

原因:忽略標(biāo)點(diǎn)符號,將所有字母轉(zhuǎn)為小寫

如上方式有很多種,其中,官方主張”烤肉串模式”。

烤肉串模式:ip-address: 198.56.23.38

值得注意的是:

如上的寬松綁定規(guī)則僅僅限于:@ConfigurationProperties

Bean屬性校驗(yàn)

對類的屬性賦值時自定義規(guī)則進(jìn)行校驗(yàn)。

"屬性校驗(yàn)"使用步驟

1.導(dǎo)入對應(yīng)坐標(biāo)

<dependency>
    <groupId>javax.validation</groupId>
    <artifactId>validation-api</artifactId>
</dependency>
<dependency>
    <groupId>org.hibernate.validator</groupId>
    <artifactId>hibernate-validator</artifactId>
</dependency>

坐標(biāo)說明:

validation-api:是屬性校驗(yàn)的接口坐標(biāo)。

hibernate-validator:相當(dāng)于是屬性校驗(yàn)的接口實(shí)現(xiàn)類坐標(biāo)。

兩者關(guān)系就像jdbc和MySQL驅(qū)動相似,所以需要導(dǎo)入兩個坐標(biāo)。

2.開啟校驗(yàn)功能

在需要啟用校驗(yàn)功能的類上寫注解:@Validated。

@Data
@ConfigurationProperties(prefix = "servers")
@Validated
public class ServiceConfig {
}

3.設(shè)置校驗(yàn)規(guī)則

在屬性上設(shè)置校驗(yàn)規(guī)則

@Data
@ConfigurationProperties(prefix = "servers")
@Validated
public class ServiceConfig {
    @Max(value = 8888,message = "最大值能超過8888")
    @Min(value = 200,message = "最小值不可小于200")
    private int prot;
    private String ipAddress;
    private long timeOut;
}

說明:如上代碼中,@Max和@Min就是設(shè)置的規(guī)則,其中有value和messge兩個屬性。

提供數(shù)據(jù)校驗(yàn)的規(guī)則有許多,如下(查看constraints包):

4.測試

我們使用yml文件進(jìn)行屬性綁定,進(jìn)行屬性校驗(yàn),如果不符合條件則報(bào)錯。

到此這篇關(guān)于SpringBoot屬性綁定與bean屬性校驗(yàn)實(shí)現(xiàn)方法詳解的文章就介紹到這了,更多相關(guān)SpringBoot屬性綁定內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 全面解析JPA?倉庫repository中的findAll()方法

    全面解析JPA?倉庫repository中的findAll()方法

    這篇文章主要介紹了全面解析JPA?倉庫repository中的findAll()方法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • 關(guān)于泛型擦除問題的解決--Mybatis查詢類型轉(zhuǎn)換

    關(guān)于泛型擦除問題的解決--Mybatis查詢類型轉(zhuǎn)換

    這篇文章主要介紹了關(guān)于泛型擦除問題的解決--Mybatis查詢類型轉(zhuǎn)換方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • Java continue break制作簡單聊天室程序

    Java continue break制作簡單聊天室程序

    這篇文章主要為大家詳細(xì)介紹了Java continue break制作簡單聊天室程序,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-10-10
  • JAVA的Dubbo如何實(shí)現(xiàn)各種限流算法

    JAVA的Dubbo如何實(shí)現(xiàn)各種限流算法

    Dubbo是一種高性能的Java RPC框架,廣泛應(yīng)用于分布式服務(wù)架構(gòu)中,在Dubbo中實(shí)現(xiàn)限流可以幫助服務(wù)在高并發(fā)場景下保持穩(wěn)定性和可靠性,常見的限流算法包括固定窗口算法、滑動窗口算法、令牌桶算法和漏桶算法,在Dubbo中集成限流器可以通過實(shí)現(xiàn)自定義過濾器來實(shí)現(xiàn)
    2025-01-01
  • jstl之map,list訪問遍歷以及el表達(dá)式map取值的實(shí)現(xiàn)

    jstl之map,list訪問遍歷以及el表達(dá)式map取值的實(shí)現(xiàn)

    下面小編就為大家?guī)硪黄猨stl之map,list訪問遍歷以及el表達(dá)式map取值的實(shí)現(xiàn)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-03-03
  • java 四舍五入使java保留2位小數(shù)示例講解

    java 四舍五入使java保留2位小數(shù)示例講解

    這篇文章主要介紹了java四舍五入使java保留2位小數(shù)示例,大家參考使用
    2013-12-12
  • Java如何實(shí)現(xiàn)遠(yuǎn)程文件下載到本地目錄

    Java如何實(shí)現(xiàn)遠(yuǎn)程文件下載到本地目錄

    本文介紹了如何使用Java來實(shí)現(xiàn)遠(yuǎn)程文件的下載功能,主要通過HTTPS路徑下載文件到本地目錄,詳細(xì)介紹了相關(guān)代碼和測試步驟,并提供了實(shí)際案例供參考,本文旨在幫助需要實(shí)現(xiàn)文件下載功能的開發(fā)者快速掌握核心技術(shù)
    2024-10-10
  • Java中HashMap如何解決哈希沖突

    Java中HashMap如何解決哈希沖突

    本文主要介紹了Java中HashMap如何解決哈希沖突,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-05-05
  • Java中怎樣處理空指針異常

    Java中怎樣處理空指針異常

    程序中的變量是?null,就意味著它沒有引用指向或者說沒有指針。這時,我們對這個變量進(jìn)行任何操作,都必然會引發(fā)空指針異常,本文主要介紹了Java中怎樣處理空指針異常,感興趣的可以了解一下
    2022-05-05
  • Mybatis的sql語句執(zhí)行異常后打印到日志問題

    Mybatis的sql語句執(zhí)行異常后打印到日志問題

    文章介紹了一種Mybatis異常日志打印方案,主要通過Mybatis攔截器獲取執(zhí)行的sql語句,并利用ThreadLocal存儲,以避免多線程下的sql語句覆蓋問題,當(dāng)異常發(fā)生時,從ThreadLocal中取出sql語句并打印到單獨(dú)的日志文件中,方便數(shù)據(jù)恢復(fù),該方案經(jīng)過壓力測試
    2024-10-10

最新評論

乌兰浩特市| 乃东县| 三亚市| 桦南县| 都兰县| 南城县| 惠水县| 民丰县| 阿巴嘎旗| 从化市| 米易县| 左贡县| 肥西县| 烟台市| 天等县| 随州市| 三亚市| 山东省| 中超| 宝丰县| 改则县| 错那县| 隆安县| 肇东市| 石屏县| 宾川县| 丹阳市| 饶河县| 奎屯市| 名山县| 合肥市| 柯坪县| 黑龙江省| 遵化市| 龙口市| 荃湾区| 怀集县| 江孜县| 黔南| 南汇区| 郁南县|