溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何在Spring Boot使用application.properties配置文件

發布時間:2021-05-23 16:44:14 來源:億速云 閱讀:1367 作者:Leah 欄目:編程語言

如何在Spring Boot使用application.properties配置文件?針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

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

  • 當前項目根目錄下的 config 目錄下

  • 當前項目的根目錄下

  • resources 目錄下的 config 目錄下

  • resources 目錄下

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

如何在Spring Boot使用application.properties配置文件

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

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

如何在Spring Boot使用application.properties配置文件

此時啟動項目,就會發現,項目以 classpath:/javaboy/application.propertie 配置文件啟動。

這是在開發工具中配置了啟動位置,如果項目已經打包成 jar ,在啟動命令中加入位置參數即可:

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

文件名問題

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

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

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

如何在Spring Boot使用application.properties配置文件

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

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

普通的屬性注入

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

例如,現在定義一個 Book 類:

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

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

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

按照傳統的方式(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 對象,啟動項目,就可以看到屬性已經注入到對象中了。

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

例如在 resources 目錄下,自定義 book.properties 文件,內容如下:

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
}

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

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

類型安全的屬性注入

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

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

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

springboot是什么

springboot一種全新的編程規范,其設計目的是用來簡化新Spring應用的初始搭建以及開發過程,SpringBoot也是一個服務于框架的框架,服務范圍是簡化配置文件。

關于如何在Spring Boot使用application.properties配置文件問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女