3.1、環(huán)境搭建
3.1.1、在project創(chuàng)建新module
3.1.2、選擇maven
3.1.3、設置module名稱和路徑
3.1.4、module初始狀態(tài)
3.1.5、引入springboot父工程
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.18</version>
</parent>
3.1.6、引入啟動器依賴
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
3.1.7、創(chuàng)建啟動類
package online.liaojy;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
/**
* @author liaojy
* @date 2023/12/18 - 6:24
*/
@SpringBootApplication
public class MainApplication {
public static void main(String[] args) {
SpringApplication.run(MainApplication.class,args);
}
}
3.1.8、創(chuàng)建控制器
package online.liaojy.controller;
import org.springframework.web.bind.annotation.RestController;
/**
* @author liaojy
* @date 2023/12/18 - 7:04
*/
@RestController
public class TestController {
}
3.2、統(tǒng)一配置管理概述
-
在 Spring Boot 工程中,實行統(tǒng)一的配置管理,即所有參數(shù)配置都會集中到一個固定位置和命名的文件中;
-
配置文件的固定位置是在 src/main/resources 目錄下,該目錄是 Spring Boot 工程默認的類路徑(classpath);
-
配置文件的命名格式為:application+后綴+擴展名,擴展名可以是 properties 、yaml 或 yml ;
-
如果 application.properties 和 application.yml(.yaml) 同時存在,則 properties 的優(yōu)先級更高。
在 Spring Boot 工程的統(tǒng)一配置文件中,有自定義的參數(shù)項,也有固定的參數(shù)項,固定的參數(shù)項及默認值見 Spring Boot 官方文檔:
https://docs.spring.io/spring-boot/docs/2.7.18/reference/html/application-properties.html
3.3、properties配置文件
3.3.1、創(chuàng)建application.properties配置文件
# application.properties 為統(tǒng)一配置文件,既可以配置固定功能的參數(shù)項,也可以配置自定義的參數(shù)項
# 固定功能參數(shù)項的示例
server.port=8088
server.servlet.context-path=/application
# 自定義參數(shù)項的示例
my.name=liaojy
3.3.2、讀取配置文件中的參數(shù)值
在統(tǒng)一配置文件中的參數(shù)項的值,都可以使用@Value("${鍵}")的方式直接讀取,但一般都是讀取自定義的參數(shù)項的值
@Value("${my.name}")
private String name;
@RequestMapping("/readApplication")
public String readApplication(){
return "Hello,"+name+"!";
}
3.3.3、測試效果
3.4、yaml配置文件(了解)
3.4.1、yaml概述
-
YAML(YAML Ain’t Markup Language)是一種基于層次結(jié)構(gòu)的數(shù)據(jù)表示方式;
-
YAML配置文件的擴展名,可以是 yaml ,也可以是 yml ;
-
YAML 配置文件中的鍵和值之間使用冒號 “ : ” 分隔,并使用縮進表示層級關系,可以減少冗余的內(nèi)容;
-
相比起 properties 配置文件,YAML 配置文件支持復雜的數(shù)據(jù)類型,集合類型可以通過減號 “ - ” 來表示。
注意:因為 YAML 配置文件無法搜索完整的參數(shù)項名稱,且空格和縮進的格式經(jīng)常被人詬病,所以本文更推薦使用 properties 配置文件
3.4.2、創(chuàng)建application.yml配置文件
# application.yml 為統(tǒng)一配置文件,既可以配置固定功能的參數(shù)項,也可以配置自定義的參數(shù)項
# 固定功能參數(shù)項的(properties)示例
# server.port=8088
# server.servlet.context-path=/application
# 固定功能參數(shù)項的(yml)示例
server:
port: 8088 # 注意冒號 “ : ” 和值之間有一個空格
servlet:
context-path: /application
# 自定義參數(shù)項的(properties)示例,properties不支持復雜的數(shù)據(jù)類型
# my.name=liaojy
# 自定義參數(shù)項的(yml)示例
my:
name: liaojy
hobby: # yml支持復雜的數(shù)據(jù)類型,,集合類型可以通過減號 “ - ” 來表示
- book
- music
- movie
3.4.3、讀取配置文件中的參數(shù)值
讀取 YAML 配置文件中參數(shù)值的方式,和讀取 properties 配置文件中參數(shù)值的方式相同,都是使用@Value("${鍵}")的方式直接讀??;
需要注意的是,使用@Value("${鍵}")的方式,不能讀取集合類型(本例為 my.hobby )的值,
如果希望讀取集合類型的值,則需要使用 @ConfigurationProperties 注解(詳細見3.5節(jié))
@Value("${my.name}")
3.4.4、測試效果
3.5、配置的批量注入
3.5.1、創(chuàng)建組件類
package online.liaojy.pojo;
import org.springframework.stereotype.Component;
import java.util.List;
/**
* @author liaojy
* @date 2023/12/19 - 7:12
*/
// @Component 注解的作用是將類標識為bean組件,因為只有在ioc容器中才能使用依賴注入給成員變量賦值
@Component
public class Me {
private String name;
private List<String> hobby;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public List<String> getHobby() {
return hobby;
}
public void setHobby(List<String> hobby) {
this.hobby = hobby;
}
@Override
public String toString() {
return "Me{" +
"name='" + name + '\'' +
", hobby=" + hobby +
'}';
}
}
3.5.2、創(chuàng)建控制器方法
@Autowired
private Me me;
@RequestMapping("/me")
public Me me(){
return me;
}
3.5.3、@Value注解的不足
-
@Value 注解需要一個個讀取配置文件中的參數(shù)值到成員變量中;
-
@Value 注解只能讀取單個值,不能讀取集合類型(本例為 my.hobby )的值。
@Value("${my.name}")
private String name;
@Value("${my.hobby}")
private List<String> hobby;
3.5.4、@ConfigurationProperties注解
-
@ConfigurationProperties 注解是 spring boot 提供的重要注解,其作用是可以將配置批量注入到 bean 對象中;
-
只要 @ConfigurationProperties 注解指定的前綴 + bean 對象中的屬性名稱,和配置文件中的“鍵”保持一致即可注入成功;
-
該注解的優(yōu)點除了方便(不需要一個個讀取配置文件中的參數(shù)值到成員變量中)之外,還支持給集合類型賦值。
@ConfigurationProperties(prefix = "my")
3.5.5、測試配置批量注入的效果
3.6、多環(huán)境的配置
-
在一個項目的實際過程中,會存在不同的環(huán)境,例如開發(fā)、測試和生產(chǎn)環(huán)境;
-
在不同的環(huán)境中,會使用不同的參數(shù)配置,例如數(shù)據(jù)庫信息和日志級別等;
-
在 spring boot 中,可以根據(jù)不同的運行環(huán)境來加載不同的配置。
注意:如果希望默認配置文件不太臃腫,也可以使用該功能將不同模塊的配置參數(shù)存放到不同的配置文件中
3.6.1、配置文件分離
創(chuàng)建一個用于開發(fā)環(huán)境的配置文件 application-dev.properties
# 該文件的配置用于開發(fā)環(huán)境
my.name=liaojy_dev
創(chuàng)建一個用于測試環(huán)境的配置文件 application-test.properties
# 該文件的配置用于測試環(huán)境
my.name=liaojy_test
創(chuàng)建一個用于測試環(huán)境的配置文件 application-prod.properties
# 該文件的配置用于生產(chǎn)環(huán)境
my.name=liaojy_prod
3.6.2、激活配置文件
# application.properties(.yml) 是 spring boot 的默認配置文件
# 如果沒有額外激活其他(有后綴的)配置文件,則默認只使用 application.properties(.yml)
my.name=liaojy_default
# spring.profiles.active 參數(shù)用于激活指定的配置文件
# 本例激活的是 application-dev.properties 配置文件
# 如果想激活多個配置文件,則使用逗號分隔,例如:spring.profiles.active=dev,test
spring.profiles.active=dev
3.6.3、配置參數(shù)的優(yōu)先級
-
如果設置了 spring.profiles.active ,但和 application.properties 無重疊的配置參數(shù),則application.properties 的配置參數(shù)依然生效;
-
如果設置了 spring.profiles.active ,并且和 application.properties 有重疊的配置參數(shù),則以激活的配置參數(shù)優(yōu)先;
-
如果設置了 spring.profiles.active ,并且激活多個配置文件以及有重疊的配置參數(shù),則以最后激活的配置參數(shù)優(yōu)先。
3.6.4、測試效果
文章來源:http://www.zghlxwxcb.cn/news/detail-760271.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-760271.html
到了這里,關于3、SpringBoot2之配置文件的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!