添加配置文件
java程序員使用Spring的時間都有幾年了,但是使用Spring和其他框架的結合的時候的配置文件是比較復雜的。比如你如果要添加mybatis的時候,你可能會添加一個spring-mybatis.xml的配置。但當SpringBoot出現的時候,這些都不用了,它簡化了很多配置,讓搭建項目變得很簡單。這一節就講講springboot的配置文件是怎么弄的。 構建一個maven項目,還有java目錄和resource目錄。resource目錄就是用來存放配置文件的。
配置文件有兩種形式
-
.properties properties結尾的配置文件跟我們傳統的配置文件一樣
-
.yml 有點類似樹形結構
首先我們先來講講* .properties 我們用idea創建springboot項目的時候,會給我們創建好一個application.properties文件,但是這個配置文件是空的。 那application.properties在項目中一般存放什么屬性嘞?使用springboot創建的項目,一般是分環境的,比如我們除了創建application.properties 還會創建下面3個文件 application-dev.properties application-test.properties application-prod.properties 這三個文件的作用是什么嘞?下表說明
application.properties | 這個配置文件是通用的,不管任何環境都會引用里面的配置 | |
application-dev.properties | dev這個配置是開發環境的配置 | |
application-test.properties | test這個是測試環境的配置 | |
application-prod.properties | prod這個是正式環境的配置 |
看到這個表就可以知道,他們的作用是干嘛的。 那么問題又來了 1>那我怎么知道我在開發環境用dev,在測試環境用test,在線上環境用prod? 2>那這些環境里面到底有什么區別嘞? 先解釋第一個問題: application.properties配置文件是什么環境都會用到的配置文件,可以在里面設置spring.profiles.active=dev的屬性,在啟動springboot項目的時候,就會讀取application-dev.properties的屬性了,假如你想讀取test環境的配置嘞,那就把dev改成test就ok了。
這樣的話,又有個問題了,那假如我把項目打成一個jar包,我需要同時部署到linux服務器上,我怎么設置為test嘞,這也是很簡單的。 springboot項目構建的jar包是可以用 java -jar XXX.jar 啟動的。而且他還支持在后面添加參數 java -jar XXX.jar --spring.profiles.active=test 這樣就解決問題了。可以把這些參數配置在sheell文件中,這樣就更加方便了在解釋第二個問題: 舉個列子在dev環境中我的服務器ip是192.168.0.5,在test 我的服務器ip是192.168.0.100 在prod我的服務器ip可能是www.xxx.com 或者配置數據庫的訪問地址,肯定是每個環境都不一樣。這就是分環境的好處。
那我們怎么在程序中訪問這些屬性呢? springboot提供兩種方式訪問 1>直接在屬性上面加上@Value("${server.ip}")
2>將配置賦于給一個javabean
在需要的地方引用javabean通過上面的兩種方式我們就能很方便的添加和獲取系統的配置
網頁測試
- 新建控制層
上圖控制層用的注解不是@controller而是@Restcontroller,這兩個有什么區別呢? @Restcontroller包含了@controller注解和@ResponseBody注解,以前我們如果要返回一個json數據,需要在控制層的方法上加上@ResponseBody,現在用@Restcontroller就可以搞定。
-
測試
*.properties 和 * .yml 哪個更好用吶? 推薦使用yml progperties配置文件比較直觀,一行代表一個屬性,簡單明了,但屬性很多的時候就有點亂。 yml配置文件,層級分明,比較像java類的表達方式,即使屬性很多,也可以放在某一父類屬性下面。
總結
SpringBoot提供的配置文件,極大的提高了程序員的開發效率,不用因為添加一個屬性,浪費大量配置的時間,而且很多框架也跟SpringBoot進行了集成,這些框架的配置也可以集成到SpringBoot的配置文件中,更加的方便了。