欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

用yml配置文件給bean綁定屬性-創(chuàng)新互聯(lián)

用yml配置文件給bean綁定屬性
  • 配置文件給bean綁定屬性介紹
    • 1.快速實(shí)現(xiàn)綁定
      • 1.1 給自定bean綁定
      • 1.2 給第三方bean綁定
      • 1.3 使用@EnableConfigurationProperties統(tǒng)一管理綁定屬性的類
    • 2.松散綁定
    • 3.常用計(jì)量單位綁定
    • 4.校驗(yàn)
    • 5.yaml文件的變量規(guī)則

讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來(lái)自于我們對(duì)這個(gè)行業(yè)的熱愛(ài)。我們立志把好的技術(shù)通過(guò)有效、簡(jiǎn)單的方式提供給客戶,將通過(guò)不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長(zhǎng)期合作伙伴,公司提供的服務(wù)項(xiàng)目有:空間域名、網(wǎng)站空間、營(yíng)銷軟件、網(wǎng)站建設(shè)、潘集網(wǎng)站維護(hù)、網(wǎng)站推廣。配置文件給bean綁定屬性介紹

配置文件功能強(qiáng)大,不僅可以設(shè)置各種依賴的屬性,還可以給bean綁定屬性,bean就是IOC容器管理的所有的類。

1.快速實(shí)現(xiàn)綁定 1.1 給自定bean綁定

yml配置如下

servers:
  IpAddress: 192.168.0.1
  port: 8083
  timeout: -1

實(shí)體類如下,@Component將該實(shí)體類作為IOC容器管理的bean,@Data是lombok快速給一個(gè)實(shí)體類實(shí)現(xiàn)getter,setter和構(gòu)造方法。@ConfigurationProperties可以給bean指定配置文件中的“對(duì)象名”。

@Component
@Data
@ConfigurationProperties(prefix = "servers")
public class ServerConfig {private String IpAddress;
    private String port;
    private String timeout;
}

小提示:使用 @ConfigurationProperties 時(shí)出現(xiàn)如下提示,只需要在pom.xml文件中引入以下坐標(biāo):

org.springframework.bootspring-boot-configuration-processor
1.2 給第三方bean綁定

第三方bean的類函數(shù)是在包里的,無(wú)法直接在上面用注釋導(dǎo)入。具體方法是構(gòu)造一個(gè)返回值為該類的方法,如下:

datasource:
  driverClassName: com.mysql.jdbc.driver
@Bean
// 注意datasource必須全小寫(xiě)
@ConfigurationProperties(prefix = "datasource")
public DruidDataSource datasource(){DruidDataSource ds = new DruidDataSource();
    return ds;
}
1.3 使用@EnableConfigurationProperties統(tǒng)一管理綁定屬性的類

上述的方法已經(jīng)能夠?qū)崿F(xiàn)給自定義的bean和第三方bean綁定屬性,但是有一個(gè)問(wèn)題是,當(dāng)這些bean太多的時(shí)候,怎么知道哪些bean通過(guò)**@ConfigurationProperties綁定了屬性?這時(shí)候就需要使用@EnableConfigurationProperties**統(tǒng)一聲明和管理這些bean

@SpringBootApplication
// 這些類用逗號(hào)隔開(kāi),將@ConfigurationProperties注釋的類注入到IOC容器中
@EnableConfigurationProperties(ServerConfig.class)
public class Springboot13ConfigurationApplication {}

這里注意@EnableConfigurationProperties注釋會(huì)自動(dòng)將找到的類注入到IOC容器中,也就是該類自動(dòng)成為了IOC容器管理的Bean,所以就不要再用@Component聲明了,如下即可:

@Data
@ConfigurationProperties(prefix = "servers")
public class ServerConfig {private String IpAddress;
    private String port;
    private String timeout;
}
2.松散綁定

松散綁定就是yaml配置文件中的命名和Bean的屬性和 @ConfigurationProperties 中引用的“對(duì)象名”都不需要非常精確。以下形式都可以綁定到:

servers:
  ipAddress: 192.168.0.2       # 駝峰模式
  ip_address: 192.168.0.2      # 下劃線模式
  ip-address: 192.168.0.2      # 烤肉串模式
  IP_ADDRESS: 192.168.0.2      # 常量模式

springboot官方推薦的是烤肉串模式,即使用-分隔,使用小寫(xiě)字母數(shù)字作為標(biāo)準(zhǔn)字符,且必須以字母開(kāi)頭。
有一點(diǎn)要注意的是 @ConfigurationProperties 中引用的“對(duì)象名”必須是烤肉串模式。
給出幾個(gè)案例:

  1. 配置文件中駝峰命名,引用的對(duì)象名全小寫(xiě)
dataSource:
  driverClassName: com.mysql.jdbc.driver
@Bean
    @ConfigurationProperties(prefix = "datasource")
    public DruidDataSource datasource(){DruidDataSource ds = new DruidDataSource();
        return ds;
    }

控制臺(tái)打印的該bean,成功綁定:
在這里插入圖片描述

  1. 配置文件中駝峰命名,引用的對(duì)象名烤肉串模式
dataSource:
  driverClassName: com.mysql.jdbc.driver
@Bean
    @ConfigurationProperties(prefix = "data-source")
    public DruidDataSource datasource(){DruidDataSource ds = new DruidDataSource();
        return ds;
    }

控制臺(tái)打印的該bean,成功綁定:
在這里插入圖片描述

  1. 配置文件中全小寫(xiě)命名,引用的對(duì)象名烤肉串模式
datasource:
  driverClassName: com.mysql.jdbc.driver
@Bean
    @ConfigurationProperties(prefix = "data-source")
    public DruidDataSource datasource(){DruidDataSource ds = new DruidDataSource();
        return ds;
    }

控制臺(tái)打印的該bean,成功綁定:
在這里插入圖片描述

  1. 配置文件中全小寫(xiě)命名,引用的對(duì)象名駝峰法模式
datasource:
  driverClassName: com.mysql.jdbc.driver
@Bean
    @ConfigurationProperties(prefix = "dataSource")
    public DruidDataSource datasource(){DruidDataSource ds = new DruidDataSource();
        return ds;
    }

控制臺(tái)打印的該bean,成功失敗,提示要使用烤肉串模式:
在這里插入圖片描述

總結(jié):
松散綁定就是yaml配置文件中的名字可以有多種方式,bean的屬性也可以有多種方式,springboot都能給我們綁定上,這就是 @ConfigurationProperties 注解的強(qiáng)大和方便之處。但是springboot官方推薦給我們的是在配置文件和注解中最好使用烤肉串模式,其中注解中必須使用烤肉串模式,實(shí)際上,全小寫(xiě)只是烤肉串模式的一個(gè)特例。

3.常用計(jì)量單位綁定

springboot利用JDK8提供的兩個(gè)類,Duration和DataSize解決的綁定的單位問(wèn)題

servers:
  ip-address: 192.168.0.1
  port: 8083
  timeout: 4
  data-size: 20
@Data
@ConfigurationProperties(prefix = "servers")
public class ServerConfig {private String IpaAddress;
    private String port;
    // 小時(shí)
    @DurationUnit(ChronoUnit.HOURS)
    private Duration timeout;
    // MB
    @DataSizeUnit(DataUnit.MEGABYTES)
    private DataSize dataSize;
}

控制臺(tái)打印結(jié)果如下:
在這里插入圖片描述

4.校驗(yàn)

Springboot給出了強(qiáng)大的數(shù)據(jù)校驗(yàn)功能,JAVAEE的JSR303規(guī)范中給出了具體的數(shù)據(jù)校驗(yàn)標(biāo)準(zhǔn),但這是一些接口,開(kāi)發(fā)者需要根據(jù)自己的需要選擇對(duì)應(yīng)的校驗(yàn)框架,這里以Hibernate提供的框架為例。

1. 開(kāi)啟校驗(yàn)框架

javax.validationvalidation-apiorg.hibernate.validatorhibernate-validator

2. 在需要開(kāi)啟校驗(yàn)功能的類上使用注解@Validated開(kāi)啟校驗(yàn)功能

@Component
@Data
@ConfigurationProperties(prefix = "servers")
//開(kāi)啟對(duì)當(dāng)前bean的屬性注入校驗(yàn)
@Validated
public class ServerConfig {}

3. 對(duì)具體的字段設(shè)置校驗(yàn)規(guī)則

@Component
@Data
@ConfigurationProperties(prefix = "servers")
//開(kāi)啟對(duì)當(dāng)前bean的屬性注入校驗(yàn)
@Validated
public class ServerConfig {//設(shè)置具體的規(guī)則
    @Max(value = 8080,message = "大值不能超過(guò)8080")
    private int port;
}

當(dāng)端口號(hào)設(shè)置為8083時(shí),會(huì)報(bào)錯(cuò)
在這里插入圖片描述
進(jìn)入包中可以看到更多的方法,這里不再贅述,根據(jù)需要查閱即可
在這里插入圖片描述

5.yaml文件的變量規(guī)則

在這里插入圖片描述
雖然字符串直接寫(xiě)數(shù)字一般會(huì)自動(dòng)轉(zhuǎn)化,但是萬(wàn)一是 0245 這種符合八進(jìn)制寫(xiě)法的數(shù)字,則會(huì)自動(dòng)轉(zhuǎn)成十進(jìn)制后再轉(zhuǎn)成字符串,就會(huì)造成錯(cuò)誤。所以如果是字符串最好直接加引號(hào)吧。

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧

分享文章:用yml配置文件給bean綁定屬性-創(chuàng)新互聯(lián)
網(wǎng)站地址:http://chinadenli.net/article26/ddisjg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站維護(hù)、自適應(yīng)網(wǎng)站、網(wǎng)站建設(shè)、用戶體驗(yàn)、電子商務(wù)、標(biāo)簽優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都seo排名網(wǎng)站優(yōu)化