本文提綱
一、默認配置
二蚓土、自定義配置(屬性)
三、適配多環(huán)境
四赖淤、最后
本文運行環(huán)境
Ubuntu 16.04 LTS
JDK 8 +
IntelliJ IDEA ULTIMATE 2017.2
Maven 3.5.0
Spring Boot 1.5.8.RELEASE
一蜀漆、默認配置
Spring Boot
提供了很多默認配置,不需要進行顯示聲明咱旱,并且大多數(shù)的默認配置已經(jīng)能滿足實際的開發(fā)确丢,節(jié)省了很多時間。
通常一個moudle
中的配置文件為:application.yml
或application.properties
吐限,里面可以聲明如數(shù)據(jù)庫連接鲜侥、tomcat、緩存等等非常多的配置诸典,可根據(jù)項目實際需要進行配置描函。.yml
與.properties
區(qū)別僅在于.yml
使用YAML
語法進行書寫,更方便人閱讀狐粱,所以本系列文章舀寓,均使用.yml
作為后綴的配置文件。
某些情況下肌蜻,需要改變配置參數(shù)基公,比如項目運行時進行配置參數(shù)修改,需要遵循以下配置優(yōu)先級:
- 命令行參數(shù)
- 來自java:comp/env的JNDI屬性
- Java系統(tǒng)屬性(System.getProperties())
- 操作系統(tǒng)環(huán)境變量
- RandomValuePropertySource 屬性類生成的 random.* 屬性
- 應(yīng)用以外(jar包外部)的 application.yml(或 properties)(帶spring.profile)文件
- 打包在應(yīng)用內(nèi)(jar包內(nèi)部)的 application.yml(或 properties)(帶spring.profile)文件
- 應(yīng)用以外(jar包外部)的 application.yml(或 properties)(不帶spring.profile)文件
- 打包在應(yīng)用內(nèi)(jar包內(nèi)部)的 application.yml(或 properties)(不帶spring.profile)文件
- @Configuration注解類上的@PropertySource
- SpringApplication.setDefaultProperties 聲明的默認屬性
由于涉及內(nèi)容眾多宋欺,本系列暫不展開細講轰豆。
二、自定義配置(屬性)
2.1 定義屬性類
一本書的屬性包含:書名齿诞、價格酸休、頁數(shù)等,定義一個Book
類祷杈,如下:
package com.zyr.demo.domain;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
@Component //將該類作為Bean注入Spring容器
@ConfigurationProperties(prefix = "book") //配置文件中book前綴的屬性將自動綁定到本類對應(yīng)的字段
public class Book {
private String name;
private Double price;
private Integer page;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Double getPrice() {
return price;
}
public void setPrice(Double price) {
this.price = price;
}
public Integer getPage() {
return page;
}
public void setPage(Integer page) {
this.page = page;
}
@Override
public String toString() {
return "Book{" +
"name='" + name + '\'' +
", price=" + price +
", page=" + page +
'}';
}
}
2.2 添加配置參數(shù)
類定義完成后斑司,就可在application.yml
以key-value
的形式,增加想自定義的配置但汞,如下:
#Book.java的屬性
book:
name: 一本書
price: 35.5
page: 128
配置完成后宿刮,當使用Book
類的時候,其字段將自動賦值配置中的值私蕾。
2.3 測試
編寫Book
的測試類僵缺,如下:
package com.zyr.demo.domain;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import static org.junit.Assert.assertEquals;
@RunWith(SpringRunner.class)
@SpringBootTest
public class BookTest {
@Autowired
private Book book;
@Test
public void test() {
assertEquals("一本書", book.getName());
assertEquals(35.5, book.getPrice(), .001);
assertEquals(128, book.getPage(), .001);
}
}
運行測試用例,測試通過踩叭,說明上面的自定義配置成功磕潮。
2.4 另外
Spring Boot
的RandomValuePropertySource
類翠胰,提供了很多生成隨機數(shù)的工具,如隨機字符串自脯,隨機整數(shù)之景,指定范圍內(nèi)的隨機數(shù)等等。
直接將application.yml
中book
的參數(shù)修改如下:
#Book.java的屬性
book:
name: ${random.value} #賦值隨機字符串
price: ${random.int} #賦值隨機整數(shù)
page: ${random.int} #賦值隨機整數(shù)
將BookTest.test
改為打印輸出Book
膏潮,多次運行锻狗,控制臺每次顯示的Book
的值都不一樣:
@Test
public void test() {
System.out.println(book);
}
三、適配多環(huán)境
通常在一個實際的項目中焕参,會有開發(fā)環(huán)境屋谭,生產(chǎn)環(huán)境等,并且在不同的環(huán)境中龟糕,對應(yīng)的配置如:數(shù)據(jù)庫配置,端口號配置悔耘,緩存配置等讲岁,一般會不同,所以需要針對不同的環(huán)境衬以,編寫不同的配置文件缓艳,公用的配置直接寫在application.yml
中。
3.1 新增配置文件
在與application.yml
同級的地方看峻,即resources
文件夾下新增如下兩個配置文件:
application-dev.yml //開發(fā)環(huán)境配置文件
application-pro.yml //生產(chǎn)環(huán)境配置文件
3.2 使用指定環(huán)境的配置文件
通過在application.yml
使用spring.profiles.active
配置阶淘,即可使用指定環(huán)境的配置文件,如:
#文件`application.yml`
spring:
profiles:
active: dev #使用開發(fā)環(huán)境配置
#文件`application-dev.yml`
#Book.java的屬性
book:
name: ${random.value} #賦值隨機字符串
price: ${random.int} #賦值隨機整數(shù)
page: ${random.int} #賦值隨機整數(shù)
#文件`application-pro.yml`
#Book.java的屬性
book:
name: 一本書
price: 35.5
page: 128
3.3 測試
現(xiàn)在是開發(fā)環(huán)境互妓,運行上面的測試用例BookTest.test
溪窒,控制臺輸出隨機數(shù)的Book
:
Book{name='d326d313d13023c9b32f9f76efe90063', price=1.8404973E9, page=1297575634}
將application.yml
改為:
spring:
profiles:
active: pro #使用生成環(huán)境配置
再次運行測試用例BookTest.test
,控制臺輸出application-pro.yml
中指定的Book
的值:
Book{name='一本書', price=35.5, page=128}
最后
本文介紹了實際開發(fā)中Spring Boot
常用的配置情況冯勉,關(guān)于application.yml
中詳細的配置說明澈蚌,請參考官方說明。
本文代碼已上傳至我的GitHub倉庫灼狰,進入以后將branches切換為2-Config即可看見宛瞄。
前篇:
Spring Boot實際應(yīng)用講解(一):Hello World
后續(xù)將推出以下文章,敬請關(guān)注交胚!
Spring Boot實際應(yīng)用講解(三):表單驗證
Spring Boot實際應(yīng)用講解(四):RESTful API
Spring Boot實際應(yīng)用講解(五):AOP之請求日志
Spring Boot實際應(yīng)用講解(六):MySQL + Spring-data-jpa(Hibernate)
Spring Boot實際應(yīng)用講解(七):統(tǒng)一異常處理
Spring Boot實際應(yīng)用講解(八):MySQL + Mybatis
Spring Boot實際應(yīng)用講解(九):MySQL + Mybatis + Redis
文中若有錯之處份汗,還請各位批評指正,謝謝蝴簇!
原文作者/ZYRzyr
原文鏈接:http://www.reibang.com/p/d4c7f33c9b37
請進入這里獲取授權(quán):https://101709080007647.bqy.mobi