SpringBoot配置文件application.properties的使用
一、存放位置分類
- 1.當(dāng)前項目根目錄下的config目錄下
- 2.當(dāng)前項目的根目錄下
- 3.resources目錄下的config目錄下
- 4.resources目錄下
按照這上面的順序,4個配置文件的優(yōu)先級依次降低。

我們在項目里面4個位置分別設(shè)置了各種的application.properties文件。
每個文件都設(shè)置了各種的端口號,我們啟動項目看到我們當(dāng)前使用的端口號是優(yōu)先級最高的項目根目錄下config里面的配置。

我們刪除掉項目根目錄下的config目錄,現(xiàn)在項目使用的端口是項目根目錄下的application.properties。

二、自定義存放位置
如果我們不在這4個位置也想加載我們的配置文件的話,我們可以在resources目錄下創(chuàng)建一個新目錄命名為myconfig,目錄下存放一個application.properties文件。
我們可以在打包成jar的情況下在啟動命令中加入配置文件的參數(shù),就可以啟動自定義的配置。
java -jar xx.jar --spring.config.location=classpath:/myconfig/
三、自定義文件名
我們的application.properties文件名稱也可以修改,比如修改成app.properties。
我們可以在打成jar包的情況下在啟動命令下加入配置文件名的參數(shù),就可以使用自定義配置文件名。

java -jar SpringBootDemo-0.0.1-SNAPSHOT.jar --spring.config.name=app

我們看到現(xiàn)在項目使用的端口是app.properties文件下的8081端口了。
四、屬性注入
我們在application.properties文件中定義屬性:
student.name=zhangsan student.age=20
我們通過@Value注解把這些屬性注入到我們的Student對象中:
示例代碼如下:
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
/**
* @author qinxun
* @date 2023-06-15
* @Descripion: 學(xué)生實體類
*/
@Component
public class Student {
@Value("${student.name}")
private String name;
@Value("${student.age}")
private Integer age;
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}測試:
import com.example.springbootdemo.bean.Student;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest
class SpringBootDemoApplicationTests {
@Autowired
private Student student;
@Test
void contextLoads() {
// 輸出 Student{name='zhangsan', age=20}
System.out.println(student);
}
}五、類型安全的屬性注入
示例代碼如下:
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
/**
* @author qinxun
* @date 2023-06-15
* @Descripion: 學(xué)生實體類
*/
@Component
@ConfigurationProperties(prefix = "student")
public class Student {
private String name;
private Integer age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}這里我們主要引入@ConfigurationProperties(prefix="student")注解,并且配置了屬性的前綴,此時自動將Spring容器中對應(yīng)的數(shù)據(jù)注入到對象對應(yīng)的屬性中,不用通過@Value注解一個個注入。
配置文件:
student.name=lisi student.age=20
測試:
import com.example.springbootdemo.bean.Student;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest
class SpringBootDemoApplicationTests {
@Autowired
private Student student;
@Test
void contextLoads() {
// 輸出 Student{name='lisi', age=20}
System.out.println(student);
}
}總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Spring之關(guān)于PropertyDescriptor的擴(kuò)展剖析
這篇文章主要介紹了Spring之關(guān)于PropertyDescriptor的擴(kuò)展剖析,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-07-07
Java二維數(shù)組實現(xiàn)數(shù)字拼圖效果
這篇文章主要為大家詳細(xì)介紹了Java二維數(shù)組實現(xiàn)數(shù)字拼圖效果,控制臺可以對空格進(jìn)行移動,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-07-07
Java中dubbo+zookeeper微服務(wù)架構(gòu)簡介
Apache Dubbo是一款高性能的 Java RPC 框架,這篇文章主要介紹了Java中dubbo+zookeeper微服務(wù)架構(gòu),需要的朋友可以參考下2021-09-09
Java如何實現(xiàn)數(shù)據(jù)壓縮所有方式性能測試
本文介紹了多種壓縮算法及其在Java中的實現(xiàn),包括LZ4、BZip2、Deflate、Gzip和7z等,LZ4以其高效的壓縮和解壓縮速度而受到青睞,特別是在大數(shù)據(jù)處理場景中,通過對比不同壓縮算法的性能和壓縮率,我們選擇了最適合當(dāng)前項目需求的壓縮工具2025-02-02
SpringBoot中隨機(jī)鹽值+雙重SHA256加密實戰(zhàn)
本文主要介紹了SpringBoot中隨機(jī)鹽值+雙重SHA256加密實戰(zhàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2024-07-07

