亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

關(guān)于springboot中的自定義配置項(xiàng)

 更新時(shí)間:2023年07月13日 09:41:46   作者:是餛飩呀  
這篇文章主要介紹了關(guān)于springboot中的自定義配置項(xiàng),在項(xiàng)目開發(fā)的過程中,經(jīng)常需要自定義系統(tǒng)業(yè)務(wù)方面的配置文件及配置項(xiàng),Spring Boot提供了@value注解、@ConfigurationProperties注解和Environment接口等3種方式自定義配置項(xiàng),需要的朋友可以參考下

自定義配置項(xiàng)

在項(xiàng)目開發(fā)的過程中,經(jīng)常需要自定義系統(tǒng)業(yè)務(wù)方面的配置文件及配置項(xiàng),Spring Boot提供了@value注解、@ConfigurationProperties注解和Environment接口等3種方式自定義配置項(xiàng)。

@value

在實(shí)際項(xiàng)目中,經(jīng)常需要在配置文件中定義一些簡單的配置項(xiàng),Spring Boot提供@Value注解來設(shè)置簡單的配置項(xiàng),默認(rèn)讀取application.properties文件中的配置屬性。

我們?cè)?code>application.properties配置文件下自定義配置屬性。

在這里插入圖片描述

然后在使用的位置調(diào)用@Value注解來獲取配置項(xiàng)的值,如下所示:

@Value("${com.jingt.name.firstName}")
    private String firstName;
    @Value("${com.jingt.name.secondName}")
    private String secondName;
    public String testValue(){
        return firstName + "|" + secondName;
    }
@Autowired
private HelloServices helloServices;
 @Test
    void testValue() {
        System.out.println(helloServices.testValue());
    }

在這里插入圖片描述

注意:

  1. 使用@Value注解時(shí),所在類必須被Spring容器管理,也就是使用@Component、@Controller、@Service等注解定義的類。
  2. @Value需要傳入完整的配置項(xiàng)的Key值。
  3. @Value注解默認(rèn)讀取application配置文件,如果需要使用其他的配置文件,可以通過@PropertySource注解指定對(duì)應(yīng)的配置文件。

在啟動(dòng)類上加注解@PropertySource

@SpringBootApplication
@PropertySource(value = {"classpath:application_test.properties"})
public class HelloworldApplication {
    public static void main(String[] args) {
        SpringApplication.run(HelloworldApplication.class, args);
    }
}

在application_test.properties 配置文件中加入

com.jingt.name.firstName=guo1
com.jingt.name.thirdName=jingt1
@Value("${com.jingt.name.firstName}")
private String firstName;
@Value("${com.jingt.name.thirdName}")
private String secondName;
public String testValue(){
    return firstName + "|" + secondName;
}

把secondName改為thirdName,firstName從guo改為guo1

在這里插入圖片描述

會(huì)發(fā)現(xiàn)thirdName也已經(jīng)獲取到了,firstName還是為guo,這是因?yàn)閍pplication.properties配置文件加載的優(yōu)先級(jí)的原因,application.properties會(huì)覆蓋application_test.properties對(duì)應(yīng)文件中的值。

Environment接口

Environment是Spring為運(yùn)行環(huán)境提供的高度抽象的接口,它會(huì)自動(dòng)獲取系統(tǒng)加載的全部配置項(xiàng),包括命令行參數(shù),系統(tǒng)屬性,系統(tǒng)環(huán)境,隨機(jī)數(shù),配置文件等。使用時(shí)無須其他的額外配置,只要在使用的類中注入Environment即可。

在application.properties文件中增加自定義配置項(xiàng)

com.jingt.name.firstName=guo
com.jingt.name.secondName=jingt

Environment讀取的是系統(tǒng)中所有的配置。我們既可以在application.properties中設(shè)置自定義的配置項(xiàng),又可以在自定義配置文件中添加配置項(xiàng)。

Environment對(duì)象注入,獲取系統(tǒng)配置

   @Autowired
    private Environment env;
    @Test
    void getEnv(){
        System.out.println(env.getProperty("com.jingt.name.firstName"));
        System.out.println(env.getProperty("com.jingt.name.secondName"));
    }

引入的是import org.springframework.core.env.Environment;,不要引入錯(cuò)了。

在這里插入圖片描述

使用Environment時(shí)還需要注意以下兩點(diǎn):

使用Environment無須指定配置文件,其獲取的是系統(tǒng)加載的全部配置文件中的配置項(xiàng)。需要注意配置文件的編碼格式,默認(rèn)為ISO8859-1。

@ConfigurationProperties

在實(shí)際項(xiàng)目開發(fā)中,需要注入的配置項(xiàng)非常多時(shí),@value和Environment兩種方法就會(huì)比較煩瑣。這時(shí)可以使用注解@ConfigurationProperties將配置項(xiàng)和實(shí)體Bean關(guān)聯(lián)起來,實(shí)現(xiàn)配置項(xiàng)和實(shí)體類字段的關(guān)聯(lián),讀取配置文件數(shù)據(jù)。

在resources下創(chuàng)建自定義的website.properties配置文件,增加配置屬性。

com.jingt.resource.name=jingt
com.jingt.resource.website=com.jingt.com
com.jingt.resource.language=java

創(chuàng)建一個(gè)配置類

在這里插入圖片描述

@Configuration
@ConfigurationProperties(prefix = "com.jingt.resource")
@PropertySource(value = "classpath:website.properties")
public class ResourceConfig {
    private String name;
    private String website;
    private String language;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getWebsite() {
        return website;
    }
    public void setWebsite(String website) {
        this.website = website;
    }
    public String getLanguage() {
        return language;
    }
    public void setLanguage(String language) {
        this.language = language;
    }
}

我們使用了@Configuration注解、@ConfigurationProperties和@PropertySource三個(gè)注解來定義WebSiteProperties實(shí)體類:

  • @Configuration定義此類為配置類,用于構(gòu)建bean定義并初始化到Spring容器。
  • @ConfigurationProperties(prefix = “com.weiz.resource”)綁定配置項(xiàng),其中prefix表示所綁定的配置項(xiàng)名的前綴。
  • @PropertySource(value = “classpath:website.properties”)指定讀取的配置文件及其路徑。@PropertySource不支持引入YML文件。

通過上面的WebSiteProperties類即可讀取全部對(duì)應(yīng)的配置項(xiàng)。

在單元測試中,我們測試是否可以通過

@Autowired
    private ResourceConfig config;
    @Test
    void getResourceConfig(){
        System.out.println(config.getName());
        System.out.println(config.getWebsite());
        System.out.println(config.getLanguage());
    }

在這里插入圖片描述

  1. 使用YML文件時(shí)注意空格和格式縮進(jìn)。
  2. Properties文件默認(rèn)使用的是ISO8859-1編碼格式,容易出現(xiàn)亂碼問題。如果含有中文,加入spring.http.encoding.charset=UTF-8配置即可。
  3. Properties配置的優(yōu)先級(jí)高于YML文件。因?yàn)閅ML文件的加載順序先于Properties文件,如果兩個(gè)文件存在相同的配置,后面加載的Properties中的配置會(huì)覆蓋前面YML中的配置。
  4. @PropertySource注解默認(rèn)只會(huì)加載Properties文件,YML文件不能使用此注解。
  5. 簡單值推薦使用@Value,復(fù)雜對(duì)象推薦使用@ConfigurationProperties。
  6. 只有Spring容器中的組件才能使用容器提供的各類方法,所以,配置讀取類需要增加@Component注解才能加入Spring容器中。

到此這篇關(guān)于關(guān)于springboot中的自定義配置項(xiàng)的文章就介紹到這了,更多相關(guān)springboot自定義配置項(xiàng)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • jmeter接口測試教程及接口測試流程詳解(全網(wǎng)僅有)

    jmeter接口測試教程及接口測試流程詳解(全網(wǎng)僅有)

    Jmeter是由Apache公司開發(fā)的一個(gè)純Java的開源項(xiàng)目,即可以用于做接口測試也可以用于做性能測試。本文給大家分享jmeter接口測試教程及接口測試流程,感興趣的朋友跟隨小編一起看看吧
    2021-12-12
  • jdk8的datetime時(shí)間函數(shù)使用示例

    jdk8的datetime時(shí)間函數(shù)使用示例

    這篇文章主要介紹了jdk8的datetime時(shí)間函數(shù)使用示例,需要的朋友可以參考下
    2014-03-03
  • idea 多模塊項(xiàng)目依賴父工程class找不到問題的方法

    idea 多模塊項(xiàng)目依賴父工程class找不到問題的方法

    這篇文章主要介紹了idea 多模塊項(xiàng)目依賴父工程class找不到問題的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2019-01-01
  • java導(dǎo)出數(shù)據(jù)庫的全部表到excel

    java導(dǎo)出數(shù)據(jù)庫的全部表到excel

    這篇文章主要為大家詳細(xì)介紹了java導(dǎo)出數(shù)據(jù)庫的全部表到excel的相關(guān)資料,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-03-03
  • 使用@ControllerAdvice同時(shí)配置過濾多個(gè)包

    使用@ControllerAdvice同時(shí)配置過濾多個(gè)包

    這篇文章主要介紹了使用@ControllerAdvice同時(shí)配置過濾多個(gè)包的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • Java Web過濾器詳解

    Java Web過濾器詳解

    這篇文章主要為大家詳細(xì)介紹了Java WEB過濾器的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • Springboot 集成 lombok.jar過程解析

    Springboot 集成 lombok.jar過程解析

    這篇文章主要介紹了Springboot 集成 lombok.jar過程解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-11-11
  • Jmeter多種定時(shí)器實(shí)現(xiàn)方法解析

    Jmeter多種定時(shí)器實(shí)現(xiàn)方法解析

    這篇文章主要介紹了Jmeter多種定時(shí)器實(shí)現(xiàn)方法解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-09-09
  • Java BigDecimal基礎(chǔ)用法詳解

    Java BigDecimal基礎(chǔ)用法詳解

    Java在java.math包中提供的API類BigDecimal,用來對(duì)超過16位有效位的數(shù)進(jìn)行精確的運(yùn)算。雙精度浮點(diǎn)型變量double可以處理16位有效數(shù),但在實(shí)際應(yīng)用中,可能需要對(duì)更大或者更小的數(shù)進(jìn)行運(yùn)算和處理
    2022-06-06
  • Java對(duì)象的內(nèi)存布局詳細(xì)介紹

    Java對(duì)象的內(nèi)存布局詳細(xì)介紹

    這篇文章主要介紹了Java對(duì)象的內(nèi)存布局,我們知道在Java中基本數(shù)據(jù)類型的大小,例如int類型占4個(gè)字節(jié)、long類型占8個(gè)字節(jié),那么Integer對(duì)象和Long對(duì)象會(huì)占用多少內(nèi)存呢?本文介紹一下Java對(duì)象在堆中的內(nèi)存結(jié)構(gòu)以及對(duì)象大小的計(jì)算
    2023-02-02

最新評(píng)論