Spring Boot 讀取配置文件

瞭解過spring-Boot這個技術的,應該知道Spring-Boot的核心配置文件application.properties,固然也能夠經過註解自定義配置文件的信息。java

Spring-Boot讀取配置文件的方式:
1.讀取核心配置文件信息application.properties的內容
     核心配置文件是指在resources根目錄下的application.properties或application.yml配置文件,讀取這兩個配置文件的方法有兩種,都比較簡單。web

    配置文件application.properties內容以下:spring

test.msg=Hello World SpringBoot

    方式一:使用@Value方式(經常使用)json

import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class WebController {
	@Value("${test.msg}")
	private String msg;
	
	@RequestMapping("/index1") 
	public String index1(){
		return "方式一:"+msg;
	}
}

    注意:在@Value的${}中包含的是核心配置文件中的鍵名。app

    http://localhost:8088/index1時獲得:"方式一:Hello World SpringBoot"測試

    方式二:使用Environment方式this

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.env.Environment;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class WebController {
	@Autowired
	private Environment env;
	
	@RequestMapping("/index2") 
	public String index2(){
		return "方式二:"+env.getProperty("test.msg");
	}
}

    注意:這種方式是依賴注入Evnironment來完成,在建立的成員變量private Environment env上加上@Autowired註解便可完成依賴注入,而後使用env.getProperty("鍵名")便可讀取出對應的值。
    訪問:http://localhost:8088/index2時獲得:"方式二:Hello World SpringBoot"spa


2.讀取自定義配置文件信息,例如:config.properties
        爲了避免破壞核心文件的原生態,但又須要有自定義的配置信息存在,通常狀況下會選擇自定義配置文件來放這些自定義信息,這裏在resources目錄下建立配置文件config.propertiescode

        resources/config.properties內容以下:對象

user.name=lvgang
user.age=35

        建立實體類:

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


@Component
@ConfigurationProperties(prefix = "user",locations = "classpath:config.properties")   
public class MyWebConfig{
	private String name;
	private int age;
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
}

        注意:在@ConfigurationProperties註釋中有兩個屬性:
                locations:指定配置文件的所在位置
                prefix:指定配置文件中鍵名稱的前綴(我這裏配置文件中全部鍵名都是以author.開頭)
        使用@Component是讓該類可以在其餘地方被依賴使用,即便用@Autowired註釋來建立實例。

        建立測試類:

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;

@Controller  
public class ConfigController {
	@Autowired
	private MyWebConfig conf;
	
	@RequestMapping("/test") 
	public @ResponseBody String test() {
		return "Name:"+conf.getName()+"---"+"Age:"+conf.getAge(); 
	}
}

        注意:因爲在Conf類上加了註釋@Component,因此能夠直接在這裏使用@Autowired來建立其實例對象。         訪問:http://localhost:8088/test時獲得:"Name:lvgang---Age:35"

相關文章
相關標籤/搜索