本篇文章的主題是在springboot中寫多個配置文件,指定讓個配置文件生效,以便於達到在開發環境,測試環境,線上環境根據不一樣的配置靈活應用;讀完本篇你將得到,學會springboot的多環境配置;學會使用idea配置虛擬機參數啓動不一樣的配置文件;學會使用jar包運行而且指定不一樣的配置文件等;java
spring框架內部提供了2中方式用於加載YAML文檔,以供啓動時讀取配置文件;YamlPropertiesFactoryBean
會 加載 YAML 變爲 Properties;YamlMapFactoryBean
會 轉換 YAML 爲map;使用YAML更加簡便不用擔憂內部具體如何轉換;web
引入依賴boor-start依賴和打包插件;jdk1.8版本,boot2.1.1;spring
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.1.RELEASE</version> <relativePath/> </parent> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build>
一切從簡,知識追尋者不會在配置文件中寫其餘內容,就指定端口便可,用於區別不一樣的環境;其中配置開發環境爲dev,生產環境爲pro;默認激活dev 環境;瀏覽器
# 激活配置 spring: profiles: active: dev --- # 配置一 開發環境 spring: profiles: dev server: port: 8060 --- # 配置二 生產環境 spring: profiles: pro server: port: 8061
controller一個hell方法,用於瀏覽器測試;springboot
@RestController public class ZSZXZ { @GetMapping("zszxz") public String hello(){ return "hello 知識追尋者"; } }
啓動類添加@SpringBootApplication註解,表名是個springboot應用,會進行自動配置;app
/** * @Author lsc * <p> 多環境配置 </p> */ @SpringBootApplication public class ProfileApp { public static void main(String[] args) { SpringApplication.run(ProfileApp.class,args); } }
啓動工程,打開瀏覽器路徑以下,端口是8086,說明默認激活dev環境已經成功框架
http://localhost:8060/zszxzmaven
application.yml中修改激活環境爲pro後重啓工程,修改瀏覽器端口,執行結果以下說明配置成功;ide
# 激活配置 spring: profiles: active: pro
http://localhost:8061/zszxzspring-boot
執行結果
去除application.yml中激活方式,知識追尋者改用idea配置VM參數選項方式進行激活;
--- # 配置一 開發環境 spring: profiles: dev server: port: 8060 --- # 配置二 生產環境 spring: profiles: pro server: port: 8061
在VM選項中輸入-Dspring.profiles.active=dev
,表示激活dev環境;而後重啓工程訪問便可
將工程打包成jar包,在cmd中以下命令執行,若是包名不一樣請替換,而後瀏覽器訪問便可;
java -jar springboot-profile-1.0-SNAPSHOT.jar --Dspring.profiles.active=dev
上面的配置文件都寫在一個application.yml中,過於累贅,爲了方便查閱和解耦合,推薦多個配置文件方式,而後在主配置文件中激活,具體的步驟以下;
新建yml文件名爲application-zszxz.yml;內容以下
server: port: 8061
新建yml文件名爲application-test.yml;內容以下
server: port: 8060
修改application.yml內容以下
spring: profiles: active: zszxz
http://localhost:8061/zszxz 啓動後結果 與以前一致,再也不貼圖浪費資源;