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

Spring配置文件超詳細(xì)講解

 更新時(shí)間:2025年03月03日 08:56:35   作者:小豬同學(xué)hy  
這篇文章主要介紹了Spring配置文件超的相關(guān)資料,配置文件是一種存放應(yīng)用程序或系統(tǒng)配置的文件,允許開發(fā)者和用戶在不修改代碼的情況下調(diào)整應(yīng)用程序的行為和性能,

什么是配置文件?

配置文件是一種存放應(yīng)用程序或系統(tǒng)配置的文件,包含了程序運(yùn)行時(shí)所需要的各種選項(xiàng)和配置信息,例如字體樣式、默認(rèn)語言等。它允許開發(fā)者和用戶在不修改代碼的情況下,調(diào)整應(yīng)用程序的行為和性能。配置文件通常以文本形式存在,格式可以是XML、JSON、YAML(yml)、INI、Properties等。

配置文件的作用

配置文件主要是為了解決硬編碼代碼的問題,把可能會(huì)發(fā)生改變的信息,放在一個(gè)集中的地方,當(dāng)我們啟動(dòng)某個(gè)程序時(shí),應(yīng)用程序從配置文件中讀取數(shù)據(jù),并加載運(yùn)行。

使用配置文件,可以使程序完成用戶和應(yīng)用程序的交互,或者應(yīng)用程序與其他應(yīng)用程序的交互。

硬編碼指的是將數(shù)據(jù)直接嵌入到程序或者其他可執(zhí)行對象的源代碼中,也就是我們常說的將“代碼寫死”。

SpringBoot配置文件

SpringBoot支持并定義了配置文件的格式,也是在另一個(gè)層面達(dá)到了規(guī)范其他框架集成到SpringBoot的目的。

很多項(xiàng)目或者框架的配置信息也放在配置文件中,如:

  • 項(xiàng)目的啟動(dòng)端口號(hào)
  • 數(shù)據(jù)庫的連接信息(包含用戶名和密碼的設(shè)置)
  • 第三方系統(tǒng)的調(diào)用密鑰等信息
  • 用于發(fā)現(xiàn)和定位問題的普通日志和異常日志等

SpringBoot中,內(nèi)置了Tomcat服務(wù)器,默認(rèn)端口號(hào)是8080,但在用戶電腦上8080端口號(hào)可能會(huì)被其他應(yīng)用程序占用,此外,如果啟動(dòng)多個(gè)SpringBoot項(xiàng)目,那么端口號(hào)也需要不同,所以SpringBoot需要支持讓用戶自定義端口號(hào)。

配置文件格式

在SpringBoot中,有三種不同形式的配置文件

  • application.properties
  • application.yml
  • application.yaml

yml是yaml的縮寫,實(shí)際開發(fā)中出現(xiàn)的頻率最高。yaml和yml使用方式是一樣的,都是鍵值對的形式,所以后面我們只講yml。

當(dāng)應(yīng)?程序啟動(dòng)時(shí),SpringBoot會(huì)?動(dòng)從classpath路徑找到并加載
application.properties 和 application.yaml 或者 application.yml ?件
,當(dāng)然也可以使用 spring.config.name 指定文件路徑和名稱。

配置文件的優(yōu)先級(jí)

  • 理論上,application.properties 和 application.yml 是可以同時(shí)存在同一個(gè)項(xiàng)目中的,當(dāng)這兩個(gè)配置文件都存在,兩個(gè)配置都會(huì)加載。如果配置文件內(nèi)容有沖突,以application.properties 為主,即 application.properties 的優(yōu)先級(jí)更高。
  • 雖然在理論上兩個(gè)配置文件可以共存,但在實(shí)際的業(yè)務(wù)中,我們都是采用一種統(tǒng)一的配置文件,這樣可以更好的維護(hù)(降低故障率)。

properties配置文件說明

properties配置文件是最早期的配置文件格式,也就是創(chuàng)建SpringBoot項(xiàng)目默認(rèn)的配置文件

properties基本語法

properties是以鍵值對的形式配置的,key和value之間用“=”來連接。

示例:

#配置項(xiàng)目端口號(hào)
server.port=9090
#配置數(shù)據(jù)庫連接信息
spring.datasource.url=jdbc:mysql://localhost:3306/beantext?characterEncoding=utf-8&useSSL=false
#配置數(shù)據(jù)庫用戶名
spring.datasource.username=root
#配置數(shù)據(jù)庫密碼
spring.datasource.password=root
#配置數(shù)據(jù)庫驅(qū)動(dòng)
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

配置文件中使用 # 來添加注釋信息。

讀取配置文件

在項(xiàng)目中,如果我們想要讀取到配置文件中的內(nèi)容,需要使用 @Value 注解并且在注解中使用“${}”的格式來讀取。

my.text=hello world
package com.example.demo.controller;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RequestMapping("/pro")
@RestController
public class PropertiesController {
    @Value("${my.text}")
    private String key;

    @RequestMapping("/text1")
    public String getValue() {
        return "獲取到的value為:" + key;
    }
}

properties缺點(diǎn)

properties配置是以鍵值對的形式配置的,我們通過觀察,可以看到里面有些代碼比較冗余。

此外,properties配置格式對中文也是不友好,我們把value值換為中文,再來試一下:

my.text=你好 世界

為什么會(huì)這樣,我們可以打斷點(diǎn)看一下:

可以看到,key的值是四個(gè)問號(hào)。 但是idea默認(rèn)的字符集是UTF-8,是支持中文的,為了防止這種情況發(fā)生,所以我們在properties配置文件中盡量不要出現(xiàn)中文。

接下來,我們來講一下yml配置文件。

yml配置文件說明

yml是yaml的縮寫,全程是 Yet Another Markup Language 翻譯過來就是“另一種標(biāo)記語言”。

yml基本語法

yml是樹形結(jié)構(gòu)的配置文件,基本語法是:key: value(注意:冒號(hào)后面是有空格的,不能省略?。?!

key后+(冒號(hào)+空格

我們可以看到,正確的寫法的key是會(huì)有高亮提示的(橙色,當(dāng)然應(yīng)該可以設(shè)置成其他顏色),而對于錯(cuò)誤的寫法,key還是灰色

此外,只要冒號(hào)有空格隔開,就是正確的寫法,至于空格的數(shù)量,是不限的,當(dāng)然按照規(guī)范來寫的話,最好就一個(gè)。

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

spring: 
  datasource:
    url: jdbc:mysql://localhost:3306/beantext?characterEncoding=utf-8&useSSL=false
    username: root
    password: root
    driver-class-name: com.mysql.cj.jdbc.Driver

可以看到,相對properties配置文件的寫法,yml配置文件的寫法不僅能夠體現(xiàn)出層級(jí)關(guān)系還能節(jié)省不必要的代碼

此外,yml還有其他操作。

yml配置不同數(shù)據(jù)類型及null

# 字符串
string.value: hello

# 布爾類型
boolean.value: true
boolean.value1: false

# 整數(shù)類型
int.value: 10

# 浮點(diǎn)數(shù)
float.value: 3.14159

# Null  ~ 代表null
null.value: ~


# "" 空字符串
# '' 單引號(hào)也表示空字符串
# 冒號(hào)后面什么都不加也可以表示空字符串。但這種方式不直觀,更多的表示是使用引號(hào)括起來
empty:
  value1: ''
  value2: ""
  value3:

那么yml配置文件的屬性應(yīng)該如何獲???

其實(shí)跟properties配置文件獲取屬性的操作一樣,都是要使用 @Value 注解來進(jìn)行獲取的。

package com.example.demo.controller;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RequestMapping("/pro")
@RestController
public class PropertiesController {
    @Value("${string.value}")
    private String value;

    @Value("${boolean.value}")
    private Boolean value1;

    @Value("${boolean.value1}")
    private Boolean value2;

    @Value("${int.value}")
    private Integer value3;

    @Value("${float.value}")
    private Float value4;

    @Value("${null.value}")
    private String value5;



    @RequestMapping("/getValue")
    public String getValue() {
        return "獲取到的value為:" + value+" | "+value1+" | "+value2+" | "+value3+" | "+value4+" | "+value5;
    }
}

 注意事項(xiàng)

字符串默認(rèn)不用加上單引號(hào)或者雙引號(hào),如果加英文的雙引號(hào)可以表示特殊的含義,而如果加英文的單引號(hào)則不會(huì)表示特殊的含義

我們來看個(gè)例子來理解這段話的意思:

string:
  value1: Hello \n SpringBoot
  value2: 'Hello \n SpringBoot'
  value3: "Hello \n SpringBoot"
package com.example.demo.controller;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RequestMapping("/pro")
@RestController
public class PropertiesController {

    @Value("${string.value1}")
    private String value1;

    @Value("${string.value2}")
    private String value2;

    @Value("${string.value3}")
    private String value3;

    @RequestMapping("/getValue")
    public String getValue() {
        System.out.println(value1);
        System.out.println(value2);
        System.out.println(value3);
        return "OK";
    }
}

可以看到,不加引號(hào)的和加單引號(hào)的不會(huì)讓“\n”進(jìn)行換行,而加雙引號(hào)的依舊會(huì)讓"\n"進(jìn)行換行操作。

我們可以得出結(jié)論:

  • 字符串默認(rèn)不用加上單引號(hào)或雙引號(hào);
  • 單引號(hào)會(huì)轉(zhuǎn)義特殊字符,使其失去特殊功能,始終是一個(gè)普通的字符串;
  • 雙引號(hào)不會(huì)轉(zhuǎn)義字符串里面的特殊字符,特殊字符會(huì)表示本身的含義。

可能會(huì)有點(diǎn)繞,\n本義是換行

使用單引號(hào)會(huì)轉(zhuǎn)義,就是說不再換行了,\n只是一個(gè)普通的字符串;

使用雙引號(hào)不會(huì)轉(zhuǎn)義,就是說\n依舊是它本身的含義,即換行。

這里我們來了解一個(gè)新的注解:@PostConstruct

@PostConstruct

@PostConstruct可以標(biāo)注在方法上,被標(biāo)注的方法會(huì)在Spring容器完成Bean的實(shí)例化和依賴注入之后自動(dòng)執(zhí)行。所以我們這里可以偷個(gè)懶,后面的講解我們就使用這個(gè)注解來幫我們完成測試。

需要注意:

  • 用該注解修飾的方法必須是非靜態(tài)方法;
  • 不能有參數(shù);
  • 返回類型通常是void

配置對象

yml配置文件不僅能配置一些基本的數(shù)據(jù)類型,還能配置對象。

寫法如下:

#配置對象
student:
  name: '張三'
  age: 18

也可以寫成行的形式:

#行的形式
student1: {name: '張三', age: 18}

那么這個(gè)時(shí)候我們就不能使用 @Value 注解來獲取配置中的對象了,需要使用另外一個(gè)注解@ConfigurationProperties 來讀取,如下:

package com.example.demo.model;

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

@Data
@Component
@ConfigurationProperties(prefix = "student")//prefix表示前綴
public class Student {
    private String name;
    private int age;
}
@Controller
public class PropertiesController {
    @Autowired
    private Student student;

    @PostConstruct
    public void getStudent() {
        System.out.println(student);
    }
}

配置集合

ymp還可以配置集合。

配置格式:

在-后一定要加空格,否則-和后面的內(nèi)容就成了整體,統(tǒng)一賦值給對應(yīng)的屬性

type:
  list:
    - 'zhangsan'
    - 'lisi'
    - 'wangwu'
package com.example.demo.model;

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

import java.util.List;

@Data
@Component
@ConfigurationProperties("type")
public class ListConfig {
    private List<String> list;

  }

   
@Controller
public class PropertiesController {

    @Autowired
    private ListConfig listConfig;

    @PostConstruct
    public void getList() {
        System.out.println(listConfig.toString());
    }
}

配置Map

package com.example.demo.model;

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

import java.util.Map;

@Data
@Component
@ConfigurationProperties("maptypes")
public class MapConfig {
    private Map<String, String> map;
}
package com.example.demo.controller;

import com.example.demo.model.ListConfig;
import com.example.demo.model.MapConfig;
import com.example.demo.model.Student;
import jakarta.annotation.PostConstruct;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@Controller
public class PropertiesController {

    @Autowired
    private MapConfig mapConfig;

    @PostConstruct
    public void getMap() {
        System.out.println(mapConfig);
    }
}

yml配置文件的優(yōu)缺點(diǎn)

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

  • 可讀性?,寫法簡單, 易于理解
  • 采用縮進(jìn)和嵌套來表示層次結(jié)構(gòu),適合非常復(fù)雜配置的管理
  • ?持更多的數(shù)據(jù)類型, 可以簡單表達(dá)對象, 數(shù)組, List,Map等數(shù)據(jù)形態(tài).
  • ?持更多的編程語?, 不?是Java中可以使?, 在Golang, Python, Ruby, JavaScript中也可以使?

缺點(diǎn)

  • 不適合寫復(fù)雜的配置?件
  • 對格式有較強(qiáng)的要求(?個(gè)空格可能會(huì)引起?場?案),對縮進(jìn)敏感

總結(jié)

什么是配置文件?

配置文件是用來存放應(yīng)用程序或者系統(tǒng)的配置的文件,可以在不動(dòng)源碼的情況下對應(yīng)用程序的性能和行為進(jìn)行調(diào)整,使用配置文件,可以使程序完成用戶和應(yīng)用程序的交互,或者應(yīng)用程序與其他應(yīng)用程序的交互。

SpringBoot的配置文件

Spring有三種配置文件:

  • application.properties
  • application.yml
  • application.yaml

application.properties 和 application.yml 是可以同時(shí)存在同一個(gè)項(xiàng)目中的,以application.properties為主,.properties的優(yōu)先級(jí)更高。

配置文件的格式

  •  application.properties:鍵值對形式,key和value用“=”隔開
  • application.yml:也是鍵值對,key和value用“冒號(hào)+空格”隔開。

讀取配置文件的方式

對于基本的數(shù)據(jù)類型,我們采用 @Value 注解即可,但對于對象、集合、map這些,我們需要使用 @ConfigurationProperties 。

@PostConstruct可以標(biāo)注在方法上,被標(biāo)注的方法會(huì)在Spring容器完成Bean的實(shí)例化和依賴注入之后自動(dòng)執(zhí)行。要求是:方法不能是靜態(tài)方法,不能有參數(shù),返回值盡量為void。

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

相關(guān)文章

  • Java獲取上月份最后一天日期8位的示例代碼

    Java獲取上月份最后一天日期8位的示例代碼

    這篇文章主要介紹了Java獲取上月份最后一天日期8位,需要的朋友可以參考下
    2022-09-09
  • Java中過濾器 (Filter) 和 攔截器 (Interceptor)的使用

    Java中過濾器 (Filter) 和 攔截器 (Interceptor)的使用

    這篇文章主要介紹了Java中過濾器 (Filter) 和 攔截器 (Interceptor)的使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-05-05
  • Spring Boot異常處理問題小結(jié)

    Spring Boot異常處理問題小結(jié)

    在 Spring Boot 中,異常處理是一個(gè)重要的部分,可以允許開發(fā)者優(yōu)雅地處理應(yīng)用程序中可能發(fā)生的錯(cuò)誤和異常,這篇文章主要介紹了Spring Boot異常處理問題小結(jié),需要的朋友可以參考下
    2024-05-05
  • springboot中application.yml多環(huán)境生效規(guī)則說明

    springboot中application.yml多環(huán)境生效規(guī)則說明

    這篇文章主要介紹了springboot中application.yml多環(huán)境生效規(guī)則說明,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • springboot項(xiàng)目之相互依賴報(bào)錯(cuò)問題(基于idea)

    springboot項(xiàng)目之相互依賴報(bào)錯(cuò)問題(基于idea)

    這篇文章主要介紹了springboot項(xiàng)目之相互依賴報(bào)錯(cuò)問題(基于idea),具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • 解決idea中maven新增的配置文件xx.xml沒生效問題

    解決idea中maven新增的配置文件xx.xml沒生效問題

    這篇文章主要介紹了如何解決idea中maven新增的配置文件xx.xml沒生效問題,公司項(xiàng)目有用自己的`私服,Maven正常去私服下載jar包是沒問題的,但阿里云鏡像找不到相關(guān)的jar包報(bào)錯(cuò),文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2024-06-06
  • SpringBoot中的Shiro及環(huán)境搭建

    SpringBoot中的Shiro及環(huán)境搭建

    Apache Shiro是一個(gè)強(qiáng)大且靈活的開源安全框架,用于實(shí)現(xiàn)認(rèn)證、授權(quán)、加密、會(huì)話管理和Web集成等安全功能,本文介紹了Shiro的概念、啟動(dòng)步驟、Spring Boot整合Shiro的環(huán)境搭建、實(shí)現(xiàn)登錄攔截、用戶認(rèn)證以及與MyBatis、Thymeleaf的整合方法,感興趣的朋友跟隨小編一起看看吧
    2025-12-12
  • MyBatis實(shí)現(xiàn)表連接查詢寫法(三種對應(yīng)關(guān)系)的方法總結(jié)

    MyBatis實(shí)現(xiàn)表連接查詢寫法(三種對應(yīng)關(guān)系)的方法總結(jié)

    這篇文章主要介紹了MyBatis實(shí)現(xiàn)表連接查詢寫法(一對一關(guān)系、一對多關(guān)系、多對多關(guān)系)的方法,文中的示例代碼講解詳細(xì),感興趣的可以了解一下
    2023-01-01
  • SpringBoot中的事務(wù)處理問題

    SpringBoot中的事務(wù)處理問題

    這篇文章主要介紹了SpringBoot中的事務(wù)處理問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • Spring 數(shù)據(jù)庫連接池(JDBC)詳解

    Spring 數(shù)據(jù)庫連接池(JDBC)詳解

    本篇文章主要介紹了基于Spring的JDBC基本框架搭建;基于Spring的JDBC增刪改查;讀取配置文件中的數(shù)據(jù)等,具有很好的參考價(jià)值。下面跟著小編一起來看下吧
    2017-05-05

最新評(píng)論

瑞丽市| 基隆市| 阿城市| 玉龙| 陵川县| 龙州县| 三明市| 凭祥市| 大化| 罗源县| 防城港市| 晋宁县| 育儿| 泽普县| 周至县| 康马县| 宜宾县| 深水埗区| 茌平县| 修文县| 巴青县| 蒙阴县| 建瓯市| 永川市| 洛南县| 东源县| 广南县| 荣成市| 科尔| 津市市| 惠州市| 绵阳市| 锡林浩特市| 大方县| 南汇区| 子长县| 渭南市| 海安县| 湄潭县| 永济市| 阳新县|