瞭解過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"