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

詳解Spring Boot配置文件application.properties

 更新時間:2019年06月04日 08:34:30   投稿:laozhang  
在本文中我們給大家整理了關(guān)于Spring Boot 的配置文件 application.properties的相關(guān)知識點(diǎn)內(nèi)容,需要的朋友們參考學(xué)習(xí)下。

在 Spring Boot 中,配置文件有兩種不同的格式,一個是 properties ,另一個是 yaml 。

雖然 properties 文件比較常見,但是相對于 properties 而言,yaml 更加簡潔明了,而且使用的場景也更多,很多開源項目都是使用 yaml 進(jìn)行配置(例如 Hexo)。除了簡潔,yaml 還有另外一個特點(diǎn),就是 yaml 中的數(shù)據(jù)是有序的,properties 中的數(shù)據(jù)是無序的,在一些需要路徑匹配的配置中,順序就顯得尤為重要(例如我們在 Spring Cloud Zuul 中的配置),此時我們一般采用 yaml。

本文主要來看看 properties 的問題。

位置問題

首先,當(dāng)我們創(chuàng)建一個 Spring Boot 工程時,默認(rèn) resources 目錄下就有一個 application.properties 文件,可以在 application.properties 文件中進(jìn)行項目配置,但是這個文件并非唯一的配置文件,在 Spring Boot 中,一共有 4 個地方可以存放 application.properties 文件。

  • 當(dāng)前項目根目錄下的 config 目錄下
  • 當(dāng)前項目的根目錄下
  • resources 目錄下的 config 目錄下
  • resources 目錄下

按如上順序,四個配置文件的優(yōu)先級依次降低。如下:

這四個位置是默認(rèn)位置,即 Spring Boot 啟動,默認(rèn)會從這四個位置按順序去查找相關(guān)屬性并加載。但是,這也不是絕對的,我們也可以在項目啟動時自定義配置文件位置。

例如,現(xiàn)在在 resources 目錄下創(chuàng)建一個 javaboy 目錄,目錄中存放一個 application.properties 文件,那么正常情況下,當(dāng)我們啟動 Spring Boot 項目時,這個配置文件是不會被自動加載的。我們可以通過 spring.config.location 屬性來手動的指定配置文件位置,指定完成后,系統(tǒng)就會自動去指定目錄下查找 application.properties 文件。

此時啟動項目,就會發(fā)現(xiàn),項目以 classpath:/javaboy/application.propertie 配置文件啟動。

這是在開發(fā)工具中配置了啟動位置,如果項目已經(jīng)打包成 jar ,在啟動命令中加入位置參數(shù)即可:

java -jar properties-0.0.1-SNAPSHOT.jar --spring.config.location=classpath:/javaboy/

文件名問題

對于 application.properties 而言,它不一定非要叫 application ,但是項目默認(rèn)是去加載名為 application 的配置文件,如果我們的配置文件不叫 application ,也是可以的,但是,需要明確指定配置文件的文件名。

方式和指定路徑一致,只不過此時的 key 是 spring.config.name 。

首先我們在 resources 目錄下創(chuàng)建一個 app.properties 文件,然后在 IDEA 中指定配置文件的文件名:

指定完配置文件名之后,再次啟動項目,此時系統(tǒng)會自動去默認(rèn)的四個位置下面分別查找名為 app.properties 的配置文件。當(dāng)然,允許自定義文件名的配置文件不放在四個默認(rèn)位置,而是放在自定義目錄下,此時就需要明確指定 spring.config.location 。

配置文件位置和文件名稱可以同時自定義。

普通的屬性注入

由于 Spring Boot 源自 Spring ,所以 Spring 中存在的屬性注入,在 Spring Boot 中一樣也存在。由于 Spring Boot 中,默認(rèn)會自動加載 application.properties 文件,所以簡單的屬性注入可以直接在這個配置文件中寫。

例如,現(xiàn)在定義一個 Book 類:

public class Book {
 private Long id;
 private String name;
 private String author;
 //省略 getter/setter
}

然后,在 application.properties 文件中定義屬性:

book.name=三國演義
book.author=羅貫中
book.id=1

按照傳統(tǒng)的方式(Spring中的方式),可以直接通過 @Value 注解將這些屬性注入到 Book 對象中:

@Component
public class Book {
 @Value("${book.id}")
 private Long id;
 @Value("${book.name}")
 private String name;
 @Value("${book.author}")
 private String author;
 //省略getter/setter
}

注意

Book 對象本身也要交給 Spring 容器去管理,如果 Book 沒有交給 Spring 容器,那么 Book 中的屬性也無法從 Spring 容器中獲取到值。

配置完成后,在 Controller 或者單元測試中注入 Book 對象,啟動項目,就可以看到屬性已經(jīng)注入到對象中了。

一般來說,我們在 application.properties 文件中主要存放系統(tǒng)配置,這種自定義配置不建議放在該文件中,可以自定義 properties 文件來存在自定義配置。

例如在 resources 目錄下,自定義 book.properties 文件,內(nèi)容如下:

book.name=三國演義
book.author=羅貫中
book.id=1

此時,項目啟動并不會自動的加載該配置文件,如果是在 XML 配置中,可以通過如下方式引用該 properties 文件:

<context:property-placeholder location="classpath:book.properties"/>

如果是在 Java 配置中,可以通過 @PropertySource 來引入配置:

@Component
@PropertySource("classpath:book.properties")
public class Book {
 @Value("${book.id}")
 private Long id;
 @Value("${book.name}")
 private String name;
 @Value("${book.author}")
 private String author;
 //getter/setter
}

這樣,當(dāng)項目啟動時,就會自動加載 book.properties 文件。

這只是 Spring 中屬性注入的一個簡單用法,和 Spring Boot 沒有任何關(guān)系。

類型安全的屬性注入

Spring Boot 引入了類型安全的屬性注入,如果采用 Spring 中的配置方式,當(dāng)配置的屬性非常多的時候,工作量就很大了,而且容易出錯。

使用類型安全的屬性注入,可以有效的解決這個問題。

@Component
@PropertySource("classpath:book.properties")
@ConfigurationProperties(prefix = "book")
public class Book {
 private Long id;
 private String name;
 private String author;
 //省略getter/setter
}

這里,主要是引入 @ConfigurationProperties(prefix = “book”) 注解,并且配置了屬性的前綴,此時會自動將 Spring 容器中對應(yīng)的數(shù)據(jù)注入到對象對應(yīng)的屬性中,就不用通過 @Value 注解挨個注入了,減少工作量并且避免出錯。

總結(jié)
application.properties 是 Spring Boot 中配置的一個重要載體,很多組件的屬性都可以在這里定制。

相關(guān)文章

  • Java基礎(chǔ)之練習(xí)打印三角形

    Java基礎(chǔ)之練習(xí)打印三角形

    這篇文章主要介紹了Java基礎(chǔ)之練習(xí)打印三角形,文中有非常詳細(xì)的代碼示例,對正在學(xué)習(xí)java基礎(chǔ)的小伙伴們有非常好的幫助,需要的朋友可以參考下
    2021-04-04
  • SpringBoot部署到騰訊云的實(shí)現(xiàn)示例

    SpringBoot部署到騰訊云的實(shí)現(xiàn)示例

    記錄一下自己第一次部署springboot項目,本文主要介紹了SpringBoot部署到騰訊云的實(shí)現(xiàn)示例,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-08-08
  • 解決idea每次打開新的項目都需要重新配置maven問題

    解決idea每次打開新的項目都需要重新配置maven問題

    這篇文章主要介紹了解決idea每次打開新的項目都需要重新配置maven問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • Java源碼深度分析String與StringBuffer及StringBuilder詳解

    Java源碼深度分析String與StringBuffer及StringBuilder詳解

    當(dāng)對字符串進(jìn)行修改的時候,需要使用?StringBuffer?和?StringBuilder類,和String類不同的是,StringBuffer和?StringBuilder類的對象能夠被多次的修改,并且不產(chǎn)生新的未使用對象,本篇我們來分析分析它們的源碼
    2022-05-05
  • Java壓縮解壓zip技術(shù)_動力節(jié)點(diǎn)Java學(xué)院整理

    Java壓縮解壓zip技術(shù)_動力節(jié)點(diǎn)Java學(xué)院整理

    Java解壓縮zip - 多個文件(包括文件夾),對多個文件和文件夾進(jìn)行壓縮,對復(fù)雜的文件目錄進(jìn)行解壓。壓縮方法使用的是可變參數(shù),可以壓縮1到多個文件
    2017-05-05
  • Mybatis緩存機(jī)制詳解與實(shí)例分析

    Mybatis緩存機(jī)制詳解與實(shí)例分析

    Mybatis的緩存分為一級緩存和二級緩存,一級緩存是SqlSession級別的而二級緩存是mapper級別的,本文詳細(xì)的介紹了Mybatis緩存機(jī)制與實(shí)例分析,文中有相關(guān)的代碼示例供大家參考,需要的朋友可以參考下
    2023-11-11
  • SpringBoot深入了解日志的使用

    SpringBoot深入了解日志的使用

    Spring?Boot默認(rèn)使用SLF4J+Logback?記錄日志,并提供了默認(rèn)配置,即使我們不進(jìn)行任何額外配,也可以使用SLF4J+Logback進(jìn)行日志輸出
    2022-07-07
  • Java中的concurrenthashmap集合詳細(xì)剖析

    Java中的concurrenthashmap集合詳細(xì)剖析

    這篇文章主要介紹了Java中的concurrenthashmap集合詳細(xì)剖析,有參構(gòu)造后第一次put時會進(jìn)行初始化,由源碼可知,會先判斷所傳入的容量是否>=最大容量的一半,如果滿足條件,就會將容量修改為最大值,反之則會將容量改為所傳入數(shù)*1.5+1,需要的朋友可以參考下
    2023-11-11
  • macOS下Spring Boot開發(fā)環(huán)境搭建教程

    macOS下Spring Boot開發(fā)環(huán)境搭建教程

    這篇文章主要為大家詳細(xì)介紹了macOS下Spring Boot開發(fā)環(huán)境搭建教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • Spring Security的簡單使用

    Spring Security的簡單使用

    這篇文章主要介紹了Spring Security的簡單使用,幫助大家更好的理解和學(xué)習(xí)使用SpringBoot,感興趣的朋友可以了解下
    2021-04-04

最新評論

千阳县| 闵行区| 苗栗市| 岳普湖县| 巢湖市| 天祝| 南平市| 波密县| 额尔古纳市| 巫山县| 宁强县| 洛浦县| 芮城县| 天等县| 灵石县| 阿鲁科尔沁旗| 松潘县| 威远县| 双鸭山市| 田东县| 台北县| 孝义市| 固安县| 凉城县| 馆陶县| 古田县| 修武县| 铜陵市| 靖江市| 松原市| 健康| 开远市| 苏尼特右旗| 大同市| 富宁县| 嘉禾县| 松潘县| 南溪县| 莲花县| 广河县| 武穴市|