1. 程式人生 > >Spring Boot入門(二):獲取配置檔案值

Spring Boot入門(二):獲取配置檔案值

本篇部落格主要講解下在Spring Boot中如何獲取配置檔案的值。

1. 使用yaml配置檔案

Spring Boot預設生成的配置檔案為application.properties,不過它也支援yaml語言的配置檔案,

兩者之間的差別並不是很大,只是yaml語言的配置檔案層次結構更明顯,可讀性更強,因此目前使用的更多一些。

我們假設本來application.properties的配置為:

spring.main.banner-mode=off

那麼如何將配置檔案切換為application.yml呢?

首先刪除掉原來的配置檔案application.properties,新增配置檔案application.yml,新增方式如下:

然後修改application.yml為:

spring:
  main:
    banner-mode: "off"

執行結果和原來使用properties配置檔案時一致。

2. 使用@Value註解獲取配置檔案值

首先在application.yml中新增如下配置:

book:
  author: wangyunfei
  name: spring boot

然後修改啟動類的程式碼為:

package com.zwwhnly.springbootaction;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@SpringBootApplication
public class SpringbootActionApplication {
    @Value("${book.name}")
    private String bookName;

    @Value("${book.author}")
    private String bookAuthor;

    @RequestMapping("/")
    public String index() {
        return "book name is:" + bookName + " and book author is:" + bookAuthor;
    }

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

執行專案,在瀏覽器中輸入http://localhost:8080/,會看到如下資訊:

這種方式和在Spring專案中的使用方式一樣,更多的細節,可以檢視我之前總結的部落格:

Spring入門(九):執行時值注入。

3. 使用@ConfigurationProperties註解獲取配置檔案值

Spring Boot還提供了@ConfigurationProperties註解來獲取配置檔案值,該種方式可把配置檔案值和一個Bean自動關聯起來,使用起來更加方便而且型別安全,建議使用這種方式。

首先,在application.yml中新增如下配置:

author:
  name: wangyunfei
  age: 32

然後,新建類AuthorSettings,新增@Component註解和@ConfigurationProperties註解:

package com.zwwhnly.springbootaction;

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

@Component
@ConfigurationProperties(prefix = "author")
public class AuthorSettings {
    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;
    }
}

這裡的重點是@ConfigurationProperties註解,它的prefix屬性用來指定配置的字首,如本例中的author。

然後修改啟動類的程式碼為:

package com.zwwhnly.springbootaction;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@SpringBootApplication
public class SpringbootActionApplication {
    @Autowired
    private AuthorSettings authorSettings;

    @RequestMapping("/")
    public String index() {
        return "author name is " + authorSettings.getName() + " and author age is " + authorSettings.getAge();
    }

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

執行專案,在瀏覽器中輸入http://localhost:8080/,會看到如下資訊:

4. 使用Profile實現多環境配置管理

一般情況下,我們開發的應用程式都會有多套環境, 如dev環境,qa環境,prod環境,那麼如何實現多套環境下的配置管理呢?

其實在Spring Boot下,我們可以使用Profile來實現,接下來講解下具體的實現方式。

首先,新建2個配置檔案:application-dev.yml,application-prod.yml。

此時的專案結構如下圖所示:

如果有的同學比較喜歡用properties檔案,可以用下圖中的方式新建:

預設情況下,啟動的埠號為8080,如果我們希望在dev環境使用埠號8082,在prod環境使用埠號8083,那麼可以修改配置檔案如下:

application-dev.yml新增如下配置:

server:
  port: 8082

application-prod.yml新增如下配置:

server:
  port: 8083

執行專案,如下圖所示:

我們會發現,仍然使用的是預設的埠號8080,那麼如何指定使用dev或者prod環境的埠呢?

我們需要在application.yml新增如下配置:

spring:
  profiles:
    active: dev

此時,再次執行專案,會發現使用的是埠號8082,也就是application-dev.yml檔案中配置的。

如果希望使用prod環境的,可以修改配置為:

spring:
  profiles:
    active: prod

執行結果為:

關於Spring專案中Profile的使用可以檢視我之前總結的部落格:Spring入門(七):Spring Profile使用講解。

5. 原始碼及參考

原始碼地址:https://github.com/zwwhnly/springboot-action.git,歡迎下載。

汪雲飛《Java EE開發的顛覆者:Spring Boot實戰》

SpringBoot - 多Profile使用與切換

IDEA如何建立.properties檔案

6. 最後

歡迎掃碼關注微信公眾號:「申城異鄉人」,定期分享Java技術乾貨,讓我們一起進步。

相關推薦

Spring Boot入門()獲取配置案值

本篇部落格主要講解下在Spring Boot中如何獲取配置檔案的值。 1. 使用yaml配置檔案 Spring Boot預設生成的配置檔案為application.properties,不過它也支援yaml語言的配置檔案, 兩者之間的差別並不是很大,只是yaml語言的配置檔案層次結構更明顯,可讀性更強,因此目

Spring Boot入門 () 無xml配置的實現

無xml配置的實現 自Spring3.X 以後 spring 提供了很多的註解來代替XML檔案的配置,最核心的是下面兩個註解。 ::@Configuration:: 標註該類是配置類,類似於我們定義的applicationContext.xml ::@B

Spring Boot入門使用ThymeLeaf+表單驗證

Thymeleaf提供了一個用於整合Spring MVC的可選模組,在應用開發中,你可以使用Thymeleaf來完全代替JSP,或其他模板引擎,如Velocity、FreeMarker等。Thymeleaf的主要目標在於提供一種可被瀏覽器正確顯示的、格式良

使用Spring框架入門基於註解+XML配置的IOC/DI的使用

bsp hot sources hierarchy osi pan ioc clas operate 一、簡述 本文主要講使用註解+xml配合使用的幾種使用方式。基礎課程請看前一節。 二、步驟 1、為Pom.xml中引入依賴:本例中使用的是spring-context

Spring Boot 入門(一)入門案例

Springboot 入門 入門案例 建立spring boot專案 在pom.xml 檔案,我們需要新增兩部分依賴。 — 讓我們的專案繼承spring-boot-starter-parent 的工程 — 加入spring-boot-starter-we

Spring Boot入門篇-預設安全配置

問題: Spring Boot訪問時,有預設的安全配置,需要提供使用者名稱和密碼進行Basic Auth。 配置資訊: #設定使用者 security.user.name=root #設定密碼 security.user.password=root 解決方案: 取消安全配置

Spring Boot入門在Eclipse中使用Spring boot

新建的專案目錄大概如下 整體目錄結構和Spring專案一樣,只不過Spring boot的配置檔案遷移到了application.yml(或者application.propertis)。專案的入口為BootTestApplication.java的main函式入口。 在maven配置的pom.xml裡

spring boot學習Spring Boot自動裝配分析與實戰

Web application conditions:@ConditionalOnWebApplication和@ConditionalOnNotWebApplication,當專案是web專案,或者不是web專案的條件註解 SpEL expression conditions:@Conditional

Spring boot入門(HelloWorld)

      萬事從簡到難,我們也從helloWorld開始,後面就會自然而然的都會了。      springBoot構建一個基礎工程是非常之容易,我們僅需加兩行配置即可。 server: port:8087 servlet: context-p

Spring Boot筆記快速創建以及yml文件自動註入

conf 一個 pan .... 幾分鐘 ont 分鐘 重要 ext   上個筆記寫了如何自己去創建Spring boot,以及如何去打jar包,其實,還是有些麻煩的,我們還自己新建了幾個文件夾不是。   Idea可以讓我們快速的去創建Spring boot應用,來

Spring Boot入門(三)使用Scheduled註解實現定時任務

發布 configure code tps enables err except rup .com 在程序開發的過程中,經常會使用到定時任務來實現一些功能,比如: 系統依賴於外部系統的非核心數據,可以定時同步(每天同步一次) 系統內部一些非核心數據的統計計算,可以定時計算

Spring Boot入門(六)使用MyBatis訪問MySql資料庫(註解方式)

本系列部落格記錄自己學習Spring Boot的歷程,如幫助到你,不勝榮幸,如有錯誤,歡迎指正! 本篇部落格我們講解下在Spring Boot中使用MyBatis訪問MySql資料庫的簡單用法。 1.前期準備 假設你的機器已經安裝好了MySql,我們先執行如下語句建立資料庫和表: CREATE DATAB

Spring Boot入門(七)使用MyBatis訪問MySql資料庫(xml方式)

本系列部落格帶你一步一步的學習Spring Boot,如幫助到你,不勝榮幸,如有錯誤,歡迎指正! 本篇部落格我們講解下在Spring Boot中使用MyBatis訪問MySql資料庫(xml方式)的簡單用法。 本系列其它文章如下所示: Spring Boot入門(一):使用IDEA建立Spring Boo

Spring Boot入門(一)搭建Spring Boot專案

從本篇部落格開始,我們開始進入Spring Boot的世界,它的出現使Spring的開發變得更加簡潔,因此一經推出受到眾多程式設計師的喜愛。 作為Spring Boot系列的第一篇部落格,我們先來講解下如何搭建Spring Boot專案。 如果你直接就使用的是Spring Boot,建議你有時間可以學習下S

SpringBoot用@ConfigurationProperties獲取配置案值

SpringBoot的配置檔案有yml和properties兩種,看一些文章說yml以資料為中心,比較好。個人覺得properties更好用,所以這裡以properties格式為例來說。 我們都知道@Value 註解可以從配置檔案讀取一個配置,如果只是配置某個值,比如 某一個域名,配置為

SpringBoot 入門獲取Properties中的值,通過類配置來替代原SpringXML的配值和注入方式

•application.properties •application.yml person.last-name=\u674E\u56DB person.age=12 person.birth=2017/12/15 person.boss=false person.maps.k

Spring Boot 入門(三) 自動化配置實現

自動化配置實現 我們在上章編寫入門案例的時候,我們使用的是Spring Mvc 作為我們的表現層框架,但是我們都知道我們要使用Spring Mvc 我們就需要在web.xml檔案中配置Spring Mvc 的前端控制器DispatcherServlet。但是我們

Spring Boot乾貨系列配置檔案解析

Spring Boot使用“習慣優於配置”(專案中存在大量的配置,此外還內建了一個習慣性的配置,讓你無需手動進行配置)的理念讓你的專案快速執行起來。所以,我們要想把Spring Boot玩的溜,就要懂得如何開啟各個功能模組的預設配置,這就需要了解Spring Boo

Spring Boot 入門(十報表匯出,對比poi、jxl和esayExcel的效率

本片部落格是緊接著Spring Boot 入門(十一):整合 WebSocket, 實時顯示系統日誌寫的 關於poi、jxl和esayExcel的介紹自行百度。 jxl最多支援03版excel,所以單個sheet頁面最多隻能匯出65536條資料。 我直接將excel匯入到瀏覽器並開啟,以下統計匯出時長指將資

Spring Boot 入門(十三)整合Hasor的Dataway模組,幹掉後臺,自動配置介面

終於出湖北了,封閉2個月,家裡沒電腦,感覺好久沒自主擼程式碼啊啊啊啊啊啊啊啊啊啊啊啊啊。 連線上篇文章Spring Boot 入門(十二):報表匯出,對比poi、jxl和esayExcel的效率,繼續從入門到入坑。 dataWay剛剛開源,具體介紹可以去官網看https://www.hasor.net/web