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

詳解Spring Boot配置文件application.properties

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

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

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

本文主要來(lái)看看 properties 的問(wèn)題。

位置問(wèn)題

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

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

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

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

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

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

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

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

文件名問(wèn)題

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

方式和指定路徑一致,只不過(guò)此時(shí)的 key 是 spring.config.name 。

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

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

配置文件位置和文件名稱(chēng)可以同時(shí)自定義。

普通的屬性注入

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

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

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

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

book.name=三國(guó)演義
book.author=羅貫中
book.id=1

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

@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 對(duì)象本身也要交給 Spring 容器去管理,如果 Book 沒(méi)有交給 Spring 容器,那么 Book 中的屬性也無(wú)法從 Spring 容器中獲取到值。

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

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

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

book.name=三國(guó)演義
book.author=羅貫中
book.id=1

此時(shí),項(xiàng)目啟動(dòng)并不會(huì)自動(dòng)的加載該配置文件,如果是在 XML 配置中,可以通過(guò)如下方式引用該 properties 文件:

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

如果是在 Java 配置中,可以通過(guò) @PropertySource 來(lái)引入配置:

@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)項(xiàng)目啟動(dòng)時(shí),就會(huì)自動(dòng)加載 book.properties 文件。

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

類(lèi)型安全的屬性注入

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

使用類(lèi)型安全的屬性注入,可以有效的解決這個(gè)問(wèn)題。

@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”) 注解,并且配置了屬性的前綴,此時(shí)會(huì)自動(dòng)將 Spring 容器中對(duì)應(yīng)的數(shù)據(jù)注入到對(duì)象對(duì)應(yīng)的屬性中,就不用通過(guò) @Value 注解挨個(gè)注入了,減少工作量并且避免出錯(cuò)。

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

相關(guān)文章

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

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

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

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

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

    解決idea每次打開(kāi)新的項(xiàng)目都需要重新配置maven問(wèn)題

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

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

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

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

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

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

    Mybatis的緩存分為一級(jí)緩存和二級(jí)緩存,一級(jí)緩存是SqlSession級(jí)別的而二級(jí)緩存是mapper級(jí)別的,本文詳細(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時(shí)會(huì)進(jìn)行初始化,由源碼可知,會(huì)先判斷所傳入的容量是否>=最大容量的一半,如果滿足條件,就會(huì)將容量修改為最大值,反之則會(huì)將容量改為所傳入數(shù)*1.5+1,需要的朋友可以參考下
    2023-11-11
  • macOS下Spring Boot開(kāi)發(fā)環(huán)境搭建教程

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

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

    Spring Security的簡(jiǎn)單使用

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

最新評(píng)論

蚌埠市| 临西县| 安龙县| 兴海县| 宜春市| 宣威市| 深水埗区| 从江县| 台南市| 绥芬河市| 灵山县| 肇源县| 青州市| 永春县| 郓城县| 巫溪县| 长宁县| 临颍县| 柯坪县| 环江| 朝阳市| 潜山县| 永丰县| 邳州市| 万荣县| 凤城市| 布尔津县| 昔阳县| 朝阳区| 灵台县| 桃源县| 邢台县| 勐海县| 安义县| 东丽区| 安宁市| 淮南市| 金塔县| 兰考县| 深水埗区| 永兴县|