SpringBoot的核心配置文件



Spring Boot 的核心配置文件用於配置 Spring Boot 程序,名字必須以 application 開始

一、核心配置格式

1. .properties 文件(默認采用該文件)

在 02-springboot-springmvc 項目基礎上,進行修改,也就是在上一個項目上

項目名稱為:03-springboot-port-context-path

通過修改 application.properties 配置文件,在修改默認 tomcat 端口號及項目上下文件根鍵值對的 properties 屬性文件配置方式

#設置內嵌的Tomcat的端口號
server.port=9090

#配置項目的上下文根
server.servlet.context-path=/03-springboot-port-context-path

配置完畢之后,啟動,瀏覽器測試

頁面顯示結果

2. .yml 文件

項目名稱:04-springboot-yml在03的項目基礎上

為了區分,把SpringbootController稍作修改

package com.md.springboot.web;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

/**
 * @author MD
 * @create 2020-08-20 16:40
 */
@Controller
public class SpringbootController {

    @RequestMapping(value = "/say")
    @ResponseBody
    public String say(String name){
        return "hello " + name;
    }
}

yml 是一種 yaml 格式的配置文件,主要采用一定的空格、換行等格式排版進行配置。yaml 是一種直觀的能夠被計算機識別的的數據序列化格式,容易被人類閱讀,yaml 類似於 xml,但是語法比 xml 簡潔很多,值與前面的冒號配置項必須要有一個空格, yml 后綴也可以使用 yaml 后綴

在resources下把application.properties刪除掉,新建一個 application.yml

然后啟動,通過瀏覽器進行訪問,也是可以的

注意:

當兩種格式配置文件同時存在,使用的是.properties 配置文件

二、多環境配置

在實際開發的過程中,我們的項目會經歷很多的階段(開發->測試->上線),每個階段的配置也會不同,例如:端口、上下文根、數據庫等,那么這個時候為了方便在不同的環境之間切換,SpringBoot 提供了多環境配置,具體步驟如下

1. 步驟如下

項目名稱05-springboot-multi-environment,在上一個的基礎上

為每個環境創建一個配置文件,命名必須以 application- 環境標識.properties|yml

其中application-dev.properties

#開發環境
#設置內嵌的Tomcat的端口號
server.port=8080

#配置項目的上下文根
server.servlet.context-path=/05-springboot-multi-environment

application-product.properties

#生成環境
#設置內嵌的Tomcat的端口號
server.port=8081

#配置項目的上下文根
server.servlet.context-path=/05-springboot-multi-environment

application-test.properties

#測試環境
#設置內嵌的Tomcat的端口號
server.port=8082

#配置項目的上下文根
server.servlet.context-path=/05-springboot-multi-environment

在總配置文件 application.properties 進行環境的激活

#總配置文件


#激活開發環境
#spring.profiles.active=dev


#激活測試環境
#spring.profiles.active=test

#激活生產環境
spring.profiles.active=product

等號右邊的值和配置文件的環境標識名一致 , 可以更改總配置文件的配置

也就是等號右邊的值和配置文件和“-”后面值一樣,就是使用的那種方式

運行,啟動,測試

如果是以yml結尾的配置文件,和這個是類似的,這里就不詳細說了

三、Spring Boot 自定義配置

在 SpringBoot 的核心配置文件中,除了使用內置的配置項之外,我們還可以在自定義配置,然后采用如下注解去讀取配置的屬性值

1. @Value 注解

在項目06-springboot-custom中,創建步驟就不詳細說了,之前寫的有

在核心配置文件application.properties中,添加兩個自定義配置項 school.name 和web。在 IDEA 中可以看到這兩個屬性不能被 SpringBoot 識別,背景是桔色的

server.port=9090

server.servlet.context-path=/


#設置自定義的
school.name=mit

web=http://www.baidu.com

在 SpringBootController 中定義屬性,並使用@Value 注解,並對其方法進行測試

package com.md.springboot.web;

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.ResponseBody;

/**
 * @author MD
 * @create 2020-08-20 17:48
 */

@Controller
public class SpringBootController {

    @Value("${school.name}")
    private String schoolName;


    @Value("${web}")
    private String web;



    @RequestMapping(value = "/say")
    @ResponseBody
    public String say(){
        return schoolName+"-------"+web;
    }

}

啟動,測試

2. @ConfigurationProperties

項目名稱:07-springboot-custom

將整個文件映射成一個對象,用於自定義配置項比較多的情況

在 com.md.springboot.config 包下創建 ConfigInfo 類,

並為該類加上 Component 和ConfigurationProperties 注解,並在 ConfigurationProperties 注解中添加屬性 prefix,作用可以區分同名配置

package com.md.springboot.config;

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

/**
 * @author MD
 * @create 2020-08-20 17:56
 */

// 將此類交給spring容器進行管理
@Component
@ConfigurationProperties(prefix = "school")
public class ConfigInfo {
    private String name;
    private String web;

    public String getName() {
        return name;
    }

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

    public String getWeb() {
        return web;
    }

    public void setWeb(String web) {
        this.web = web;
    }
}

application.properties 配置文件

server.port=9090

server.servlet.context-path=/


#設置自定義的,注意都設置了school開頭,如果還有其他的name,方便區分
school.name=mit

school.web=http://www.jd.com

在 SpringBootController 中注入 ConfigInfo 配置類

此時的使用方法和value的不同,注意區別

package com.md.springboot.web;

import com.md.springboot.config.ConfigInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

/**
 * @author MD
 * @create 2020-08-20 17:59
 */

@Controller
public class SpringBootController {

// 自動注入
    @Autowired
    private ConfigInfo configInfo;

    @RequestMapping(value = "/config")
    public  @ResponseBody String say(){
        return configInfo.getName()+"============="+configInfo.getWeb();
    }
}

運行,測試

3. 警告解決

在 ConfigInfo 類中使用了 ConfigurationProperties 注解后,IDEA 會出現一個警告,但不影響程序的執行

如果想不看到這個警告,可以添加一個依賴,在pom.xml中

<!--出現警告-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
        </dependency>

這樣就可以了

4. 中文亂碼

如果在 SpringBoot 核心配置文件中有中文信息,會出現亂碼:

  • 一般在配置文件中,不建議出現中文(注釋除外)
  • 如果有,可以先轉化為 ASCII 碼


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM