Spring Boot入門(二):獲取配置文件值

本篇博客主要講解下在Spring Boot中如何獲取配置文件的值。html

1. 使用yaml配置文件

Spring Boot默認生成的配置文件爲application.properties,不過它也支持yaml語言的配置文件,java

二者之間的差異並非很大,只是yaml語言的配置文件層次結構更明顯,可讀性更強,所以目前使用的更多一些。git

咱們假設原本application.properties的配置爲:github

spring.main.banner-mode=off
複製代碼

那麼如何將配置文件切換爲application.yml呢?web

首先刪除掉原來的配置文件application.properties,新增配置文件application.yml,新增方式以下:spring

而後修改application.yml爲:瀏覽器

spring:
 main:
 banner-mode: "off"
複製代碼

運行結果和原來使用properties配置文件時一致。安全

2. 使用@Value註解獲取配置文件值

首先在application.yml中添加以下配置:springboot

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. 源碼及參考

源碼地址:github.com/zwwhnly/spr…,歡迎下載。

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

SpringBoot - 多Profile使用與切換

IDEA如何建立.properties文件

最後,歡迎關注個人微信公衆號:「申城異鄉人」,全部博客會同步更新。

相關文章
相關標籤/搜索