摘要:你是否為一個功能多個和多個文件區(qū)分不同運行環(huán)境配置,經(jīng)常為這些配置文件的管理而頭疼,現(xiàn)在通過這篇文章,將徹底解決你的煩惱,這篇文篇介紹,怎么通過文件構(gòu)建多文檔塊,區(qū)分不同環(huán)境配置,自由切換不同環(huán)境啟動項目,一個配置文件搞定。
你是否為SpringBoot一個功能多個yml和多個properties文件區(qū)分不同運行環(huán)境配置,經(jīng)常為這些配置文件的管理而頭疼,現(xiàn)在通過這篇文章,將徹底解決你的煩惱,這篇文篇介紹,怎么通過yml文件構(gòu)建多文檔塊,區(qū)分不同環(huán)境配置,自由切換不同環(huán)境啟動項目,一個配置文件搞定。
YAML簡介YAML是“YAML不是一種標(biāo)記語言”的外語縮寫(見前方參考資料原文內(nèi)容);但為了強調(diào)這種語言以數(shù)據(jù)做為中心,而不是以置標(biāo)語言為重點,而用返璞詞重新命名。它是一種直觀的能夠被電腦識別的數(shù)據(jù)序列化格式,是一個可讀性高并且容易被人類閱讀,容易和腳本語言交互,用來表達(dá)資料序列的編程語言。
它是類似于標(biāo)準(zhǔn)通用標(biāo)記語言的子集XML的數(shù)據(jù)描述語言,語法比XML簡單很多。
基本語法結(jié)構(gòu)多行縮進
數(shù)據(jù)結(jié)構(gòu)可以用類似大綱的縮排方式呈現(xiàn),結(jié)構(gòu)通過縮進來表示,連續(xù)的項目通過減號“-”來表示,map結(jié)構(gòu)里面的key/value對用冒號“:”來分隔。樣例如下:
house: family: name: Doe parents: - John - Jane children: - Paul - Mark - Simone address: number: 34 street: Main Street city: Nowheretown zipcode: 12345
注意:
1.字串不一定要用雙引號標(biāo)識; 2.在縮排中空白字符的數(shù)目并不是非常重要,只要相同階層的元素左側(cè)對齊就可以了(不過不能使用`TAB`字符); 3.允許在文件中加入選擇性的空行,以增加可讀性; 4. 在一個檔案中,可同時包含多個文件,并用`“——”`分隔; 5.選擇性的符號`“...”`可以用來表示檔案結(jié)尾(在利用串流的通訊中,這非常有用,可以在不關(guān)閉串流的情況下,發(fā)送結(jié)束訊號)。
單行縮寫
YAML也有用來描述好幾行相同結(jié)構(gòu)的數(shù)據(jù)的縮寫語法,數(shù)組用"[]"包括起來,hash用"{}"來包括。因此,上面的這個YAML能夠縮寫成這樣:
house: family: { name: Doe, parents: [John, Jane], children: [Paul, Mark, Simone] } address: { number: 34, street: Main Street, city: Nowheretown, zipcode: 12345 }準(zhǔn)備工作
環(huán)境:
windows jdk 8 maven 3.0 IDEA構(gòu)建工程
修改YML配置4.0.0 cn.zhangbox spring-boot-study 1.0-SNAPSHOT cn.zhangbox spring-boot-02-config 0.0.1-SNAPSHOT jar spring-boot-02-config Demo project for Spring Boot UTF-8 UTF-8 1.8 org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-configuration-processor true org.springframework.boot spring-boot-starter-test test org.springframework.boot spring-boot-maven-plugin
#選擇哪一個環(huán)境的配置 #這里可以在每個環(huán)境配置redis,數(shù)據(jù)庫(mysql),消息(kafka)等相關(guān)的組件的配置 spring: profiles: active: prod #文檔塊區(qū)分為三個--- --- server: port: 8081 spring: profiles: test #文檔塊區(qū)分為三個--- --- server: port: 8082 spring: profiles: test #文檔塊區(qū)分為三個--- --- server: port: 8083 spring: profiles: prod創(chuàng)建啟動類
@SpringBootApplication public class SpringBootConfigApplication { public static void main(String[] args) { SpringApplication.run(SpringBootConfigApplication.class, args); } }控制臺打印
. ____ _ __ _ _ / / ___"_ __ _ _(_)_ __ __ _ ( ( )\___ | "_ | "_| | "_ / _` | / ___)| |_)| | | | | || (_| | ) ) ) ) " |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v1.5.9.RELEASE) 2018-07-04 15:07:26.214 INFO 14812 --- [ main] c.z.s.SpringBootConfigApplication : Starting SpringBootConfigApplication on MS-20180428GSYE with PID 14812 (C:UsersAdministratorDesktopspring-boot-02-config argetclasses started by Administrator in C:UsersAdministratorDesktopspring-boot-02-config) 2018-07-04 15:07:26.219 INFO 14812 --- [ main] c.z.s.SpringBootConfigApplication : The following profiles are active: prod 2018-07-04 15:07:26.281 INFO 14812 --- [ main] ationConfigEmbeddedWebApplicationContext : Refreshing org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@3f57bcad: startup date [Wed Jul 04 15:07:26 GMT+08:00 2018]; root of context hierarchy 2018-07-04 15:07:28.988 INFO 14812 --- [ main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat initialized with port(s): 8083 (http) 2018-07-04 15:07:29.029 INFO 14812 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat] 2018-07-04 15:07:29.031 INFO 14812 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet Engine: Apache Tomcat/8.5.23 2018-07-04 15:07:29.184 INFO 14812 --- [ost-startStop-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext 2018-07-04 15:07:29.184 INFO 14812 --- [ost-startStop-1] o.s.web.context.ContextLoader : Root WebApplicationContext: initialization completed in 2909 ms 2018-07-04 15:07:29.419 INFO 14812 --- [ost-startStop-1] o.s.b.w.servlet.ServletRegistrationBean : Mapping servlet: "dispatcherServlet" to [/] 2018-07-04 15:07:29.424 INFO 14812 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: "characterEncodingFilter" to: [/*] 2018-07-04 15:07:29.424 INFO 14812 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: "hiddenHttpMethodFilter" to: [/*] 2018-07-04 15:07:29.424 INFO 14812 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: "httpPutFormContentFilter" to: [/*] 2018-07-04 15:07:29.424 INFO 14812 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: "requestContextFilter" to: [/*] 2018-07-04 15:07:30.605 INFO 14812 --- [ main] s.w.s.m.m.a.RequestMappingHandlerAdapter : Looking for @ControllerAdvice: org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@3f57bcad: startup date [Wed Jul 04 15:07:26 GMT+08:00 2018]; root of context hierarchy 2018-07-04 15:07:30.731 INFO 14812 --- [ main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error]}" onto public org.springframework.http.ResponseEntity> org.springframework.boot.autoconfigure.web.BasicErrorController.error(javax.servlet.http.HttpServletRequest) 2018-07-04 15:07:30.732 INFO 14812 --- [ main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error],produces=[text/html]}" onto public org.springframework.web.servlet.ModelAndView org.springframework.boot.autoconfigure.web.BasicErrorController.errorHtml(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse) 2018-07-04 15:07:30.777 INFO 14812 --- [ main] o.s.w.s.handler.SimpleUrlHandlerMapping : Mapped URL path [/webjars/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler] 2018-07-04 15:07:30.777 INFO 14812 --- [ main] o.s.w.s.handler.SimpleUrlHandlerMapping : Mapped URL path [/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler] 2018-07-04 15:07:30.833 INFO 14812 --- [ main] o.s.w.s.handler.SimpleUrlHandlerMapping : Mapped URL path [/**/favicon.ico] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler] 2018-07-04 15:07:31.166 INFO 14812 --- [ main] o.s.j.e.a.AnnotationMBeanExporter : Registering beans for JMX exposure on startup 2018-07-04 15:07:31.470 INFO 14812 --- [ main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 8083 (http) 2018-07-04 15:07:31.475 INFO 14812 --- [ main] c.z.s.SpringBootConfigApplication : Started SpringBootConfigApplication in 5.897 seconds (JVM running for 7.324)
至此YML多文檔塊多環(huán)境配置是不是非常簡單,切換環(huán)境只需要修改
spring: profiles: active: prod
中active對應(yīng)的環(huán)境的值即可。
源碼地址Spring Boot多文檔塊多數(shù)據(jù)源源碼
歡迎關(guān)注我的微信公眾號獲取更多更全的學(xué)習(xí)資源,視頻資料,技術(shù)干貨!
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/71484.html
摘要:簡介它的設(shè)計目的就是為例簡化開發(fā),開啟了各種自動裝配,你不想寫各種配置文件,引入相關(guān)的依賴就能迅速搭建起一個工程。它采用的是建立生產(chǎn)就緒的應(yīng)用程序觀點,優(yōu)先于配置的慣例。另,本系列教程全部用的作為開發(fā)工具。 簡介 spring boot 它的設(shè)計目的就是為例簡化開發(fā),開啟了各種自動裝配,你不想寫各種配置文件,引入相關(guān)的依賴就能迅速搭建起一個web工程。它采用的是建立生產(chǎn)就緒的應(yīng)用程序觀...
摘要:創(chuàng)建過程同類似創(chuàng)建完如下通過注解表明自己是一個僅僅是不夠的,還需要在配置文件中注明自己的服務(wù)注冊中心的地址,配置文件如下需要指明這個很重要,這在以后的服務(wù)與服務(wù)之間相互調(diào)用一般都是根據(jù)這個。 轉(zhuǎn)載請標(biāo)明出處: http://blog.csdn.net/forezp/a...本文出自方志朋的博客 一、spring cloud簡介 spring cloud 為開發(fā)人員提供了快速構(gòu)建分布式系...
摘要:下一篇介紹基于的服務(wù)注冊與調(diào)用。服務(wù)提供者工程配置這里服務(wù)提供者是使用之前進階教程第三篇整合連接池以及監(jiān)控改造而來,這里一樣的部分就不再重復(fù)說明,下面將說明新增的部分。 Spring Cloud簡介 Spring Cloud是一個基于Spring Boot實現(xiàn)的云應(yīng)用開發(fā)工具,它為基于JVM的云應(yīng)用開發(fā)中涉及的配置管理、服務(wù)發(fā)現(xiàn)、斷路器、智能路由、微代理、控制總線、全局鎖、決策競選、分...
閱讀 4588·2021-09-22 14:57
閱讀 564·2019-08-30 15:56
閱讀 2668·2019-08-30 15:53
閱讀 2241·2019-08-29 14:15
閱讀 1689·2019-08-28 17:54
閱讀 561·2019-08-26 13:37
閱讀 3479·2019-08-26 10:57
閱讀 1047·2019-08-26 10:32