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

SpringBoot配置文件properties和yml的實現(xiàn)

 更新時間:2022年04月18日 16:02:53   作者:See-L  
本文主要介紹了SpringBoot配置文件properties和yml的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

配置文件的作用

通常情況下,一個項目中的一些重要信息都會放在配置文件中,比如:數(shù)據(jù)庫的連接信息、項目的啟動端口、一些第三方的秘鑰、記錄信息的普通日志和異常日志等。

SprintBoot的配置文件(兩種):

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

.properties和.yml

在這里插入圖片描述

這兩種格式的配置文件可以共同存在于一個項目中,但一般情況下我們會統(tǒng)一格式,只使用其中的一種,來降低故障率。
.properties是最早期的SpringBoot配置文件的格式,也是現(xiàn)在默認(rèn)的配置文件格式,出現(xiàn)的時間早于.yml。
當(dāng)這兩個配置文件中出現(xiàn)相同的配置時,會優(yōu)先執(zhí)行.properties中的配置,然后再執(zhí)行.yml中的配置,即.properties的優(yōu)先級大于.yml

properties

創(chuàng)建SpringBoot項目后會自動生成一個配置文件,在該文件中,信息以鍵值對的形式進(jìn)行儲存。

# 配置項目的信息
# key=value
 server.port=8080
 spring.datasource.url=jdbc:mysql://127.0.0.1:3306/testdb?
 characterEncoding=utf8
 spring.datasource.username=root
 spring.datasource.password=root

如果我們想要在這個文件中配置一些信息,可以在遵循key-value格式下,可以定義任意名稱的key

缺點:
對于同一個對象的多個屬性進(jìn)行設(shè)置時很麻煩,需要多次重復(fù),存在冗余配置項。
如下,當(dāng)我們想要設(shè)置同一個對象很多的信息時,需要多次重復(fù)這個信息:

在這里插入圖片描述

而yml就很好的解決了這個問題。

yml

yml是YMAL的縮寫,全稱是 Yet Another Markup Language另一種標(biāo)記語言。
YMAL是一個可讀性高、易于理解、用來表達(dá)數(shù)據(jù)序列化的格式。
YMAL的作用是可以做到跨語言使用,不僅Java中可以使用,Go和python中都可以使用。

1.語法格式:

key: value表示鍵值對關(guān)系,冒號后面必須加一個空格
大小寫敏感
縮進(jìn)時不允許使用tab鍵,只能用空格
左對齊的一列數(shù)據(jù)就表示同一級
松散表示,java使用駝峰命名,而用原名或者-代替都可以正確映射,比如java中的名稱是lastName,yml中使用lastName或者last-name都可以映射到。

2.鍵值關(guān)系

#  通常寫法:
 student: 
      id: 1
      name: 張三
      age: 20


# 行內(nèi)寫法
 student: { id: 1,name: 張三, age: 20}

yml中,字符串默認(rèn)不需要加上單引號或者雙引號
使用雙引號:不會轉(zhuǎn)義字符串中的特殊字符,特殊字符會作為本身想要表達(dá)的意思:比如 name: “zhangsan \n 23”,會輸出:zhangsan 換行 23
使用單引號:會轉(zhuǎn)義特殊字符,特殊字符失去特殊作用變成普通字符。

在配置文件中,它是以鍵值對的形式儲存信息的,如果是自己配置的信息,你可以在遵循key-value的格式下,定義任何名稱的key.

使用YML連接數(shù)據(jù)庫:

sping:
  datasource:
    url:jdbc: mysql://127.0.0.0:3306/dbname?characterEncoding=tuf8
    username: root
    password: root

表示常用的字面量:

# 普通字面量
name: zhangsan
age: 18

#布爾類型
flag: true

#日期
date: 2022/04/15

# 同一個對象的多個屬性
people:
      name: lisi
      age: 20
# 數(shù)組
# 用 -表示數(shù)組中的一個元素
pets:
   - cat
   - dog
   - pig
# 行內(nèi)寫法
petss: [dog,cat,pig]

# list對象、set對象、數(shù)組對象
students:
      - name: zhangsan
        age: 22
      - name: lisi
        age: 20
      - {name: wangwu,age: 18}
      

讀取配置文件的方法:

@Value注解讀取單個配置項

如果我們想要主動的讀取配置文件中的信息,可以使用注解@Value。

使用格式:

 @Value("${server.port}")
   private String port;

在屬性前加上@Value注解,后面的括號寫入要讀取的配置中哪個key,比如讀取下面的server.port,注意格式:雙引號+${}

# 配置項目端口
 server.port=8080

在測試類中得到這個值并進(jìn)行打印:

package com.example.demo;

import Controller.TestReadYml;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class DemoApplication implements InitializingBean {


    @Value("${server.port}")
    private String port;

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class,args);
    }

    @Override
    public void afterPropertiesSet() throws Exception {
        System.out.println("  ");
        System.out.println("讀取到信息:"+port);
        System.out.println("  ");
    }
}

輸入:

在這里插入圖片描述

@ConfigurationProperties讀取實體類

1.將配置文件中的一組對象映射到實體類上:

使用格式:

@Component //spring 啟動時直接將配置文件映射到當(dāng)前類屬性上
@ConfigurationProperties("student") //student是在配置好的key

舉例:
在yml配置文件中,我們創(chuàng)建一個student對象:

 student:
      id: 1
      name: 張三
      age: 20

將這個對象映射到Student類中,也就是從配置文件里讀取到類中,

package model;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

@Component //spring 啟動時直接將配置文件映射到當(dāng)前類屬性上
@ConfigurationProperties("student")
public class Student {
    private int id;
    private String name;
    private int age;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

2.使用注入的方式將對象注入到一個類中

在啟動類中注入Student類進(jìn)行使用:

package com.example.demo;

import com.example.demo.model.Student;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.stereotype.Component;

import javax.annotation.PostConstruct;
@SpringBootApplication
@Component
public class DemoApplication {


    public static void main(String[] args) {

        SpringApplication.run(DemoApplication.class,args);
    }

    //屬性注入
    @Autowired
    private Student student;
    @PostConstruct
    private void postConstruct(){
        System.out.println("Read Yml:"+student);
    }
}

輸出:

Read Yml:Student{id=1, name='張三', age=20}

注意包路徑配置的問題?。?!
啟動類和要注入的類包必須放在同級目錄下,否則讀取不到,會顯示啟動失敗Application failed to start.

在這里插入圖片描述

properties VS yml 總結(jié)

  • yml語法更簡潔,可以解決數(shù)據(jù)冗余問題
  • yml跨語言的通用性更好,它不支持java語言還支持golang 和python
  • yml 支持更多的數(shù)據(jù)類型
  • yml格式的配置文件在寫的時候更容易出錯(冒號后面需要加一個空格),而properties雖然寫法更復(fù)雜但是不容易出錯。
  • yml雖然可以和properties共存,但一個項目中最好統(tǒng)一格式,只用其中的一個。

到此這篇關(guān)于SpringBoot配置文件properties和yml的實現(xiàn)的文章就介紹到這了,更多相關(guān)SpringBoot配置文件properties和yml內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • java開發(fā)Dubbo注解Adaptive實現(xiàn)原理

    java開發(fā)Dubbo注解Adaptive實現(xiàn)原理

    這篇文章主要為大家介紹了java開發(fā)Dubbo注解Adaptive實現(xiàn)原理詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-09-09
  • java中輸出pdf文件代碼分享

    java中輸出pdf文件代碼分享

    這篇文章主要介紹了java中輸出pdf文件代碼分享,本文直接給出實現(xiàn)代碼,需要的朋友可以參考下
    2015-03-03
  • SpringBoot 配置文件加密的步驟

    SpringBoot 配置文件加密的步驟

    這篇文章主要介紹了SpringBoot 配置文件加密的步驟,幫助大家更好的理解和學(xué)習(xí)使用springboot框架,感興趣的朋友可以了解下
    2021-03-03
  • Java使用Knife4j優(yōu)化Swagger接口文檔的操作步驟

    Java使用Knife4j優(yōu)化Swagger接口文檔的操作步驟

    在現(xiàn)代微服務(wù)開發(fā)中,接口文檔的質(zhì)量直接影響了前后端協(xié)作效率,Swagger 作為一個主流的接口文檔工具,雖然功能強大,但其默認(rèn)界面和部分功能在實際使用中略顯不足,而 Knife4j 的出現(xiàn)為我們提供了一種增強的選擇,本篇文章將詳細(xì)介紹如何在項目中集成和使用 Knife4j
    2024-12-12
  • spring為java.util.Properties類型的屬性進(jìn)行賦值過程解析

    spring為java.util.Properties類型的屬性進(jìn)行賦值過程解析

    這篇文章主要介紹了spring為java.util.Properties類型的屬性進(jìn)行賦值過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-01-01
  • 如何用Java實現(xiàn)啥夫曼編碼

    如何用Java實現(xiàn)啥夫曼編碼

    在開發(fā)手機程序時,總是希望壓縮網(wǎng)絡(luò)傳輸?shù)男畔ⅲ詼p少流量。本文僅以哈夫曼編碼為引導(dǎo),拋磚引玉,實現(xiàn)壓縮功能
    2013-08-08
  • Java8新特性之空指針異常的克星Optional類的實現(xiàn)

    Java8新特性之空指針異常的克星Optional類的實現(xiàn)

    這篇文章主要介紹了Java8新特性之空指針異常的克星Optional類的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10
  • Nacos單機版安裝啟動的全流程

    Nacos單機版安裝啟動的全流程

    這篇文章主要介紹了Nacos單機版安裝啟動的全流程,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • 關(guān)于knife4j的使用及配置

    關(guān)于knife4j的使用及配置

    這篇文章主要介紹了關(guān)于knife4j的使用及配置,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • 詳解SpringBoot整合MyBatis詳細(xì)教程

    詳解SpringBoot整合MyBatis詳細(xì)教程

    這篇文章主要介紹了詳解SpringBoot整合MyBatis詳細(xì)教程,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10

最新評論

故城县| 康平县| 泰和县| 乐亭县| 彭阳县| 长子县| 华安县| 遂平县| 上虞市| 辽阳县| 邵东县| 庐江县| 忻城县| 平邑县| 维西| 吉木乃县| 汉阴县| 丰都县| 延寿县| 崇阳县| 苗栗市| 昌宁县| 卓资县| 盐山县| 调兵山市| 三明市| 威远县| 康马县| 乳源| 天津市| 多伦县| 伊金霍洛旗| 双辽市| 岚皋县| 明溪县| 龙井市| 扎兰屯市| 柞水县| 景洪市| 固阳县| 农安县|