国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

詳解 Spring Boot 項(xiàng)目中的配置文件

這篇具有很好參考價(jià)值的文章主要介紹了詳解 Spring Boot 項(xiàng)目中的配置文件。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

詳解 Spring Boot 項(xiàng)目中的配置文件

??????點(diǎn)進(jìn)來(lái)你就是我的人了
博主主頁(yè):??????戳一戳,歡迎大佬指點(diǎn)!

歡迎志同道合的朋友一起加油喔??????

詳解 Spring Boot 項(xiàng)目中的配置文件


目錄

1. Spring Boot 項(xiàng)目中配日文件的作用是什么

2. Spring Boot 配置文件的兩種格式

1. properties的語(yǔ)法

2. yml的語(yǔ)法

3. properties與yml的對(duì)比

4. 設(shè)置不同環(huán)境下的配置文件

3. 更多的系統(tǒng)配置項(xiàng)



1. Spring Boot 項(xiàng)目中配日文件的作用是什么

配置文件中最主要的兩個(gè)作用:?連接數(shù)據(jù)庫(kù)和用于定位問(wèn)題的關(guān)鍵日志.

  • 一個(gè)項(xiàng)目中沒(méi)有數(shù)據(jù)庫(kù)的話(huà)那就談不上一個(gè)完整的項(xiàng)目.
  • 假設(shè)你正在使用一個(gè)在線(xiàn)購(gòu)物網(wǎng)站。你在購(gòu)物車(chē)?yán)锓帕艘恍┫胭I(mǎi)的東西,準(zhǔn)備稍后結(jié)賬。但如果這個(gè)網(wǎng)站沒(méi)有數(shù)據(jù)庫(kù)來(lái)保存這些信息,你可能會(huì)發(fā)現(xiàn)當(dāng)你回來(lái)時(shí),購(gòu)物車(chē)?yán)锏奈锲范疾灰?jiàn)了。
  • 另一方面,如果這個(gè)網(wǎng)站沒(méi)有配置文件,那么在出現(xiàn)問(wèn)題時(shí),開(kāi)發(fā)人員可能會(huì)很難找出問(wèn)題的原因。例如,如果支付系統(tǒng)突然出現(xiàn)故障,沒(méi)有配置文件的話(huà),可能就難以追蹤到具體出了什么問(wèn)題。

配置文件的作用:

  • 連接數(shù)據(jù)庫(kù)的信息
  • 用于發(fā)現(xiàn)和定位問(wèn)題的關(guān)鍵日志
  • 設(shè)置項(xiàng)目的啟動(dòng)端口
  • 第三方系統(tǒng)的調(diào)用密鑰等信息 (例如老師在某平臺(tái)給我們上課時(shí), 他能在平臺(tái)上拿到我們的數(shù)據(jù), 就是通過(guò)配置文件中設(shè)置的標(biāo)識(shí)來(lái)調(diào)用第三方接口獲取的)

2. Spring Boot 配置文件的兩種格式

Spring Boot 中有兩種格式的配置文件:

  • properties? (application.properties) (Spring Boot項(xiàng)目創(chuàng)建時(shí)默認(rèn)的格式)
  • yml / ymal (application.yml)

Spring Boot 中這兩種格式的配置文件的命名方式必須以 application 開(kāi)頭,? 否則配置就不會(huì)生效, 這就牽扯到了高級(jí)框架中的 "約定大于配置" , 我們要做的事情越來(lái)越少了, 但是要遵守的約定越來(lái)越多了.

【問(wèn)題】為什么需要兩種格式的配置文件呢 ? 僅僅是為了提供更多的選擇 ?

1. yml 相比于 properties 在寫(xiě)法上簡(jiǎn)化了許多 (后面會(huì)演示代碼)

2. 在跨平臺(tái)等問(wèn)題上也是有很大的優(yōu)勢(shì) (后面會(huì)講到)

【問(wèn)題】?jī)煞N格式的配置文件如果同時(shí)存在, 會(huì)以哪種格式為主?

1. 當(dāng)一個(gè)項(xiàng)目中出現(xiàn)了兩種格式的配置文件時(shí), properties 格式的配置文件優(yōu)先級(jí)高, 所以會(huì)以 properties 格式的配置文件為主. 例如?properties 配置文件中設(shè)置了端口為 8081, .yml 配置文件中也設(shè)置了端口, 為 8082, 那么最終程序啟動(dòng)時(shí)的端口就是 8081, 但是加載完 properties 文件之后, 也會(huì)加載 .yml 文件中的配置信息.

2.理論上是這兩種格式的配置文件可以出現(xiàn)在一個(gè)項(xiàng)目中, 但是一般都會(huì)統(tǒng)一配置文件,如果兩種格式都寫(xiě)了, 可能會(huì)有增加排查問(wèn)題的風(fēng)險(xiǎn);?就好比衣服種類(lèi)有很多, 但是一個(gè)餐廳里的服務(wù)員一般都會(huì)統(tǒng)一服裝,?否則會(huì)顯得雜亂無(wú)章, 不正式

1. properties的語(yǔ)法

properties以鍵值的形式配置,鍵和值中間用?=?連接起來(lái)(key=value),配置文件中的?#?代表注釋信息

# 配置系統(tǒng)端口
server.port=8082
# 配置數(shù)據(jù)庫(kù)源
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/blog?characterEncoding=utf8
spring.datasource.username=root
spring.datasource.password=123456

這些配置都屬于系統(tǒng)配置項(xiàng)(給Spring框架用),用戶(hù)還可以自定義配置項(xiàng)(可在程序中用)

用戶(hù)自定義配置

# 自定義配置
name=張三
age=20

在程序中如何讀取自定義的配置項(xiàng)呢?

使用 @Value(“${ xxx }”) 的方式可讀取用戶(hù)自定義的配置

@Value("${name}")
private String name;
@Value("${age}")
private int age;

讀取的時(shí)候,自定義與系統(tǒng)的配置項(xiàng)都可以獲取到

【代碼實(shí)例】

@Controller
@ResponseBody  //加在類(lèi)上, 表示當(dāng)前類(lèi)中的所有方法返回的都是非靜態(tài)頁(yè)面的數(shù)據(jù)
public class TestController {
    //讀取用戶(hù)自定義的配置
    //一定要是${key}格式
    @Value("${name}")
    private String name;

    @Value("${age}")  // 讀取用戶(hù)自定義的配置
    private String age;

    @Value("${server.port}")  //讀取系統(tǒng)配置項(xiàng)
    private int port;
    @RequestMapping ("/sayHi")   // = WebServlet("/URL")  
    public String sayHi() {
        return "hello world " + "->" + name + age + " port = " + port;
    }
}

瀏覽器輸入url(http://localhost:9090/sayHi)之后顯示結(jié)果如下:?

詳解 Spring Boot 項(xiàng)目中的配置文件

properties的優(yōu)缺點(diǎn)

  • 優(yōu)點(diǎn):是系統(tǒng)的默認(rèn)的配置文件格式,優(yōu)先級(jí)更高
  • 缺點(diǎn):寫(xiě)法比較冗余

2. yml的語(yǔ)法

yml是yaml的縮寫(xiě),它的語(yǔ)法格式為?key: value,其中冒號(hào)為英文格式,并且value與冒號(hào)中間的空格不可省略

# 系統(tǒng)端口號(hào)
server:
  port: 8083
# 數(shù)據(jù)庫(kù)源信息
spring:
  datasource:
    username: root
    password: 123456

yml支持更多的數(shù)據(jù)類(lèi)型

# 字符串
str1: 你好 \n 你好
str2: '你好 \n 你好'
str3: "你好 \n 你好"

# 布爾值
flag1: true
flag2: false

# 整數(shù)
num: 10

# 浮點(diǎn)數(shù)
pai: 3.14

# null ~代表null
Node: ~

讀取的方式與properties格式相同,使用@Value("${ xxx }")

@Component
public class TestYml {
    @Value("${str1}")
    private String str1;
    @Value("${str2}")
    private String str2;
    @Value("${str3}")
    private String str3;
    @Value("${num}")
    private int num;
    @Value("${flag1}")
    private boolean flag1;
    @Value("${flag2}")
    private boolean flag2;
    @Value("${pai}")
    private double pai;
    @Value("${node}")
    private String node;

    //該注解代表構(gòu)造方法,初始化bean的時(shí)候會(huì)調(diào)用該方法
    @PostConstruct
    public void construct(){
        System.out.println(str1);
        System.out.println(str2);
        System.out.println(str3);
        System.out.println(num);
        System.out.println(pai);
        System.out.println(flag1);
        System.out.println(flag2);
        System.out.println(node);
    }
}

打印結(jié)果:

詳解 Spring Boot 項(xiàng)目中的配置文件

?從上述字符串的打印發(fā)現(xiàn):

  • 字符串默認(rèn)可以不用加引號(hào)
  • 加單引號(hào),會(huì)對(duì)特殊字符進(jìn)行轉(zhuǎn)義,也就是特殊字符也當(dāng)字符串對(duì)待了
  • 加雙引號(hào),不會(huì)對(duì)特殊字符轉(zhuǎn)義,也就是特殊字符有自己的特殊含義,\n代表?yè)Q行

yml配置對(duì)象

# 對(duì)象
student1:
  id: 1
  name: 張三
  age: 10
# 對(duì)象的行內(nèi)表示
student2: {id: 2,name: 李四, age: 15}

讀取對(duì)象使用?@ConfigurationProperties?注解

@Component
@ConfigurationProperties("student1")//這里不需要使用$
@Getter
@Setter //這里是通過(guò)set方法賦值屬性的,提供set方法
@ToString
public class Student {
    //字段與yml里的名稱(chēng)相同
    private int id;
    private String name;
    private int age;
}

測(cè)試類(lèi):

@Controller
public class StudentController {
    @Autowired
    private Student student;
    
    @PostConstruct
    public void printStu(){
        System.out.println(student);
    }
}

打印結(jié)果:詳解 Spring Boot 項(xiàng)目中的配置文件

yml配置list集合

# list集合
nametype:
  name:
    - 張三
    - 李四
@Component
@ConfigurationProperties("nametype")
@Setter
@Getter
@ToString
public class TestList {
    private List<String> name;
}
@Controller
public class ListController {
    @Autowired
    private TestList testList;


    @PostConstruct
    public void printList(){
        System.out.println(testList);
    }
}

打印結(jié)果:詳解 Spring Boot 項(xiàng)目中的配置文件

yml的優(yōu)點(diǎn)

  • 寫(xiě)法簡(jiǎn)單,易于理解
  • 支持更多的數(shù)據(jù)類(lèi)型,如數(shù)組,對(duì)象等
  • 支持更多的編程語(yǔ)言,Java,Python,Glang等

3. properties與yml的對(duì)比

  • 格式不同,properties是以key=value的格式,yml是以key: value的格式,并且層級(jí)之間使用換行縮進(jìn)方式配置,vlaue與:之間的空格不可省略
  • properties配置存在冗余,yml很好的解決冗余問(wèn)題
  • properties是項(xiàng)目默認(rèn)的配置文件格式,yml是后面新的一種配置格式
  • yml的通用性更好,支持更多的語(yǔ)言
  • yml支持更多的數(shù)據(jù)類(lèi)型

4. 設(shè)置不同環(huán)境下的配置文件

一般項(xiàng)目分為三個(gè)環(huán)境:

  1. 開(kāi)發(fā)環(huán)境
  2. 測(cè)試環(huán)境
  3. 上線(xiàn)運(yùn)行環(huán)境

???在實(shí)際的項(xiàng)目開(kāi)發(fā)過(guò)程中,我們可能有測(cè)試環(huán)境、開(kāi)發(fā)環(huán)境、部署環(huán)境,這些環(huán)境下使用的數(shù)據(jù)庫(kù)連接或者項(xiàng)目啟動(dòng)的端口號(hào)可能都不太相同,只有一份配置文件,如果在不同的環(huán)境下運(yùn)行程序的話(huà)就需要我們頻繁地去修改配置文件,如果修改的配置項(xiàng)目少還好;如果多呢?不僅效率低,還可能出錯(cuò)。那么我們應(yīng)該怎么解決這種這種問(wèn)題呢?

環(huán)境不同可能配置項(xiàng)存在差異,如數(shù)據(jù)庫(kù)源,端口號(hào)不同等差異

我們可以使用如下配置文件的方式解決:

  • 相同公共的配置放在application.yml(.properties)中
  • 不同環(huán)境的配置文件放在application-xxx.yml(.properties)中(xxx可以為任意名字)
  • 一般使用pro為線(xiàn)上環(huán)境,dev為開(kāi)發(fā)環(huán)境,test為測(cè)試環(huán)境

在公共的配置文件中(application.yml)添加如下配置項(xiàng):

# 設(shè)置配置文件的運(yùn)行平臺(tái)
spring:
  profiles:
    active: dev

示例:開(kāi)發(fā)環(huán)境端口要求4567,測(cè)試環(huán)境端口要求5678,線(xiàn)上環(huán)境端口要求1234

詳解 Spring Boot 項(xiàng)目中的配置文件

  • 如果改變環(huán)境,只需要更改主配置文件application.yml中的配置項(xiàng)spring.profiles.active即可
  • active?后面寫(xiě) prod, test 和 dev, 就表示當(dāng)前主配置文件要搭配那個(gè)運(yùn)行環(huán)境來(lái)使用.

3. 更多的系統(tǒng)配置項(xiàng)

鏈接:?點(diǎn)擊獲取更多的系統(tǒng)配置項(xiàng)

詳解 Spring Boot 項(xiàng)目中的配置文件文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-477213.html

到了這里,關(guān)于詳解 Spring Boot 項(xiàng)目中的配置文件的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶(hù)投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Docker和Kubernetes部署Spring Boot項(xiàng)目:如何靈活修改配置文件?

    Docker和Kubernetes部署Spring Boot項(xiàng)目:如何靈活修改配置文件?

    ? 大家好,我是G探險(xiǎn)者,今天我們來(lái)聊一下通過(guò)容器化部署的springboot項(xiàng)目,如何靈活的修改配置文件。 有同事問(wèn)我,我們的springboot項(xiàng)目是容器化部署,使用的是K8S容器編排平臺(tái),部署上去后,修改項(xiàng)目里面的配置不太方便,還需要進(jìn)入到容器內(nèi)部進(jìn)行修改,太麻煩了,怎么

    2024年02月10日
    瀏覽(26)
  • Spring Boot學(xué)習(xí)隨筆- @SpringBootApplication詳解、加載絕對(duì)路徑配置文件、工廠創(chuàng)建對(duì)象(@ConfigurationProperties、@Value)

    Spring Boot學(xué)習(xí)隨筆- @SpringBootApplication詳解、加載絕對(duì)路徑配置文件、工廠創(chuàng)建對(duì)象(@ConfigurationProperties、@Value)

    學(xué)習(xí)視頻:【編程不良人】2021年SpringBoot最新最全教程 這是一個(gè) 組合注解 ,就是由多個(gè)注解組成。下列注解紅框內(nèi)稱(chēng)為 元注解 (jdk提供) @Target :指定注解作用范圍 @Retention :指定注解什么時(shí)候生效 重要注解 @SpringBootConfiguration:自動(dòng)配置Spring、SpringMVC相關(guān)環(huán)境 @EnableAutoCo

    2024年02月05日
    瀏覽(59)
  • 聊聊Spring Boot配置文件:優(yōu)先級(jí)順序、加載順序、bootstrap.yml與application.yml區(qū)別詳解

    在 Spring Boot 中,配置文件的優(yōu)先級(jí)順序是: application-{profile}.yml ( application-{profile}.properties ) application.yml ( application.properties ) bootstrap.yml ( bootstrap.properties )。其中, {profile} 表示不同的環(huán)境配置,如 dev 、 test 、 prod 等。 優(yōu)先級(jí)從高到低,高優(yōu)先級(jí)的配置覆蓋低優(yōu)先級(jí)

    2024年01月25日
    瀏覽(31)
  • Spring Boot 中的 @Field 注解詳解

    Spring Boot 中的 @Field 注解詳解

    Spring Boot 是目前 Java 生態(tài)圈中最受歡迎的 Web 應(yīng)用開(kāi)發(fā)框架之一,它提供了很多優(yōu)秀的功能和工具,可以幫助開(kāi)發(fā)者快速構(gòu)建高效、可靠的 Web 應(yīng)用程序。其中一個(gè)重要的功能就是數(shù)據(jù)綁定和驗(yàn)證,Spring Boot 提供了多種方式來(lái)綁定請(qǐng)求參數(shù)、表單數(shù)據(jù)、JSON 數(shù)據(jù)等。其中,@Fi

    2024年02月11日
    瀏覽(20)
  • 【Spring Boot】Spring Boot配置文件詳情

    【Spring Boot】Spring Boot配置文件詳情

    ?Spring Boot是一個(gè)開(kāi)源的Java框架,用于快速構(gòu)建應(yīng)用程序和微服務(wù)。它基于Spring Framework,通過(guò)自動(dòng)化配置和約定優(yōu)于配置的方式,使開(kāi)發(fā)人員可以更快地啟動(dòng)和運(yùn)行應(yīng)用程序。Spring Boot提供了許多開(kāi)箱即用的功能和插件,包括嵌入式Web服務(wù)器、安全性、數(shù)據(jù)訪(fǎng)問(wèn)、緩存、測(cè)試

    2024年02月12日
    瀏覽(21)
  • Spring Boot項(xiàng)目中的ASCII藝術(shù)字

    Spring Boot項(xiàng)目中的ASCII藝術(shù)字

    佛祖保佑: 可以使用Ascii藝術(shù)字實(shí)現(xiàn)個(gè)性化Spring Boot啟動(dòng)banner圖案,輕松修改更換banner.txt文件內(nèi)容,收集了豐富的banner藝術(shù)字和圖,并且支持中文banner下載,讓你的banner好玩兒更有意思。-bootschool.net 這個(gè)鏈接來(lái)進(jìn)行自定義ASCII藝術(shù)字!完美! 重點(diǎn)??! 在resources目錄下創(chuàng)建b

    2024年04月25日
    瀏覽(22)
  • Spring —— Spring Boot 配置文件

    Spring —— Spring Boot 配置文件

    JavaEE傳送門(mén) JavaEE Spring —— Bean 作用域和生命周期 Spring —— Spring Boot 創(chuàng)建和使用 如果沒(méi)有配置信息, Spring Boot 項(xiàng)目就不能連接和此操作數(shù)據(jù)庫(kù), 甚至是不能保存可以用于排查問(wèn)題的關(guān)鍵日志, 配置文件的作用是非常重要的. 系統(tǒng)使用的配置文件 (系統(tǒng)配置文件), 如端口號(hào)的配

    2023年04月09日
    瀏覽(20)
  • Spring Boot 中的 CSRF 保護(hù)配置

    Spring Boot 中的 CSRF 保護(hù)配置

    CSRF(Cross-Site Request Forgery)是一種網(wǎng)絡(luò)攻擊,它利用已認(rèn)證用戶(hù)的身份來(lái)執(zhí)行未經(jīng)用戶(hù)同意的操作。Spring Boot 提供了內(nèi)置的 CSRF 保護(hù)機(jī)制,可以幫助您防止這種類(lèi)型的攻擊。本文將介紹如何在 Spring Boot 中配置和使用 CSRF 保護(hù)。 CSRF 攻擊是一種利用用戶(hù)已經(jīng)在網(wǎng)站上進(jìn)行了身份

    2024年02月07日
    瀏覽(66)
  • spring boot中的多環(huán)境配置

    的作用是為了啟動(dòng)某個(gè)環(huán)境,兩個(gè)作用基本一致, 環(huán)境定義如下: 或者是查找application-dev.yml這個(gè)文件的所有配置 加載問(wèn)價(jià),使用的是import,注意語(yǔ)法:

    2024年02月06日
    瀏覽(18)
  • Spring Boot中的Elasticsearch自動(dòng)配置

    Spring Boot中的Elasticsearch自動(dòng)配置

    Elasticsearch是一個(gè)基于Lucene的分布式全文搜索引擎,它在搜索、分析等方面具有出色的表現(xiàn)。Spring Boot中的Elasticsearch自動(dòng)配置為我們提供了一種快速集成Elasticsearch的方式,使我們可以在Spring Boot應(yīng)用程序中輕松地使用Elasticsearch。 本文將介紹Spring Boot中的Elasticsearch自動(dòng)配置的作

    2024年02月12日
    瀏覽(28)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包