spring boot(二)配置資訊的讀取

謎一樣的Coder發表於2018-08-21

前言

spring boot配置資訊的讀取相比spring來說比較容易,甚至都不需要特意的去寫什麼配置讀取工具類(當然在實際工作中,根據不同需要還是會寫不同的工具類)。

自定義屬性與載入

1、編寫配置檔案

server.port = 8080

com.learn.liman.work=coder
com.learn.liman.company=xwbank

com.learn.liman.job=${com.learn.liman.work} in ${com.learn.liman.company}

其中的server.port就是配置的訪問埠,這個屬性是spring boot中自帶的屬性。

後面編寫的兩個屬性是測試屬性,第三個屬性用到了屬性之間的讀取。

2、properties資訊對應的例項物件

package com.learn.component;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

@Component
public class BlogProperties {
	
	@Value("${com.learn.liman.work}")
	private String work;
	
	@Value("${com.learn.liman.company}")
	private String company;
	
	@Value("${com.learn.liman.job}")
	private String job;

	public String getWork() {
		return work;
	}

	public void setWork(String work) {
		this.work = work;
	}

	public String getCompany() {
		return company;
	}

	public void setCompany(String company) {
		this.company = company;
	}

	public String getJob() {
		return job;
	}

	public void setJob(String job) {
		this.job = job;
	}
}

注意打上@Component標籤,在每一個屬性用@Value上對應相應的屬性值

3、測試

package com.learn.springboot;

import static org.hamcrest.Matchers.equalTo;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;

import org.junit.Assert;
import org.junit.Before;
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.SpringJUnit4ClassRunner;
import org.springframework.test.context.web.WebAppConfiguration;

import com.learn.SpringbootApplication;
import com.learn.component.BlogProperties;


@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes = SpringbootApplication.class)
@WebAppConfiguration
public class SpringbootApplicationTests {

	@Autowired
	private BlogProperties blogProperties;
	
	@Test
	public void getProperties() {
		Assert.assertEquals("xwbank", blogProperties.getCompany());
		Assert.assertEquals("coder",blogProperties.getWork());
		Assert.assertEquals("coder in xwbank",blogProperties.getJob());
	}

}

多環境配置

在實際開發spring boot應用的時候,通常一套程式會安裝到幾個不同的環境,在一些網際網路公司開始採用Apollo來對配置資訊進行管理,在spring boot中其實也支援多環境的配置

1、編寫多個配置檔案

spring boot中針對多個配置檔案,命名需要滿足application-{profile}.properties的格式,其中的{profile}就是標識的使用環境,例如以下方式:

application-dev.properties

application-test.properties

application-prod.properties

分別對應開發、測試和生產環境。

這裡打算通過配置不同環境的埠,來實現不同環境的切換。

application.properties檔案中通過如下屬性實現配置的切換:(目前指定的是測試環境)

spring.profiles.active=test

2、測試

這裡的測試非常簡單,只需要修改application.properties中的配置,然後在不同埠下訪問即可

相關文章