設定檔是非常重要的,整個專案中所有的重要資料都是在設定檔中進行設定的例如:
資料庫的連接資訊(使用者名稱和密碼的設定);
專案啟動的連接埠;
#第三方系統所呼叫的秘鑰資訊;
可以發現和定位問題的普通日誌和例外日誌等(日誌的等級和持久化);
如果沒有設定檔的話,這些資訊就無法進行配置了,資料庫無法連接,日誌無法查看等這些問題都是對於Spring Boot專案非常關鍵的,因此設定檔是特別重要的!
設定檔的分類一般是:
系統的設定檔(系統定義好的),如連接字串,日誌的相關設定;
使用者自己定義的;
#而Spring Boot的設定檔主要有兩種格式:
.properties
.yml
就是這樣的兩種格式,而且這裡也一定要這麼寫,不然也是會報錯的(約定大於配置),在這兩個裡面都是可以進行相關配置文件的設定的,兩種格式只是不同時間的產物罷了,另外兩種格式的寫法也是不同的,這個下面會有相關的介紹,而且這兩種格式也是可以並存的,如果兩個都配置了,這裡的配置會採用properties裡面的配置,而忽略yml裡面的配置,因此不建議同時使用兩種格式再同一個項目!
properties設定檔是更早期的設定檔格式,也是Spring Boot專案預設的設定文件,以下就具體介紹一下properties設定檔:
在properties裡面是以鍵值對為主的(key=value),類似
##這樣的格式(中間不要寫空格,也不要寫多餘的空格)如果是自訂的設定檔的話,也是key=value的形式,而這是需要自己寫的,如果要讀取這個檔案也只能使用自己定義的key值來得到value值! 2.讀取設定檔同樣也是使用註解就可以解決這個問題,這裡使用@Value註解以及${}的格式就可以進行讀取了:@Controller public class Test { @Value("${server.port}") //读取配置项 private String port; @ResponseBody //返回一个非静态页面的数据 @RequestMapping("/func") //设置路由地址 public String func(){ return "port: " + port; } }接著透過頁面搜尋http://localhost:8080/func就看有觀察到讀取的連接埠號碼了:
##而使用@Value是只能讀取一個設定檔的話,如果想讀取多個的話,需要多寫幾個@Value標籤就可以了
#3.properties的缺點
而想要解決這個問題就需要使用yml配置文件了
四.yml配置文件的說明
1.yml基本語法
這樣的語法再寫上面的連接資料庫配置的話,就方便很多了:
補充:yml中關於單、雙引號的問題:yml中如果使用了雙引號就會按照(原)語義執行,如果不加,或者加了單引號,那麼預設就會將字串中的特殊字元進行轉義,例如\n -> \n(轉義)處理。
2.讀取設定檔
在yml里面还是可以配置对象的:
另外也可以使用行内写法:
而想要读取到这个对象的话就不能再使用@Value注解了,这里需要借助@ConfigurationProperties来读取:
import lombok.Data; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component; @Data @ConfigurationProperties(prefix = "student") //读取配置文件的对象 @Component public class Student { private int id; private String name; private int age; }
然后读取对象,就可以直接进行注入了:
@Controller public class Test { @Autowired private Student student; @ResponseBody @RequestMapping("/getstudent") public String getStudent(){ return "student: " + student; } }
然后通过浏览器搜索http://localhost:8080/getstudent就可以得到对象内容了:
在yml里面也是可以配置集合的:
同样行内写法也是可以的:
而要获取到集合的话,和获取对象是差不多的,也是通过@ConfigurationProperties来获取:
import lombok.Data; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component; import java.util.List; @Data @ConfigurationProperties(prefix = "dbtypes") @Component public class ListConfig { private List<String> name; }
读取集合:
@Controller public class Test { @Autowired private ListConfig listConfig; @ResponseBody @RequestMapping("/getlist") public String getList(){ return "name:" + listConfig.getName(); } }
然后通过浏览器搜索http://localhost:8080/getlist就可以得到对象内容了:
properties是以key=value的形式配置的键值对类型配置文件,而yml是以key: value的形式配置的键值对类型配置文件;
properties是早期且系统默认的配置文件格式,但配置存在一定的冗余数据,而yml可以更好的解决数据冗余问题;
yml通用性更好,支持多语言;
yml支持更多的数据类型;
以上是Spring Boot設定檔的作用與細則是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!