在實際的開發之中,因爲開發(dev)、測試(beta)、運行(product)的環境不一樣,有可能須要選擇不一樣的配置文件,因此在 SpringBoot 裏面充分的考慮到了此類問題,那麼就專門提供有多個 profile 配置,可是對於多 profile 配置必定給要區分出是 yml 還 是 properties,這兩種資源的配置是不一樣的。html
一、 基於 yml 實現 profile 的配置處理:java
· 在使用 yml 配置文件的時候全部可使用的 profile 配置項都要求在一個文件之中編寫;spring
spring: profiles: active: product --- spring: messages: basename: i18n/Messages,i18n/Pages profiles: dev server: port: 8080 --- spring: messages: basename: i18n/Messages,i18n/Pages profiles: beta server: port: 9090 --- spring: messages: basename: i18n/Messages,i18n/Pages profiles: product server: port: 80
最初進行 profile 切換的處理能夠經過 maven 的編譯工具動態選擇,可是在 Spring 裏面能夠方便的實現這種切換。apache
二、 此時全部的 thymeleaf 頁面都保存在「src/main/view」目錄之中,並且全部的 SpringBoot 配置文件(*.yml)這個文件也應該都 一塊兒輸出到 jar 文件裏面,那麼就須要配置一個資源的引用,修改「microboot」中的 pom.xml 配置文件:app
<resources> <resource> <directory>src/main/resources</directory> <includes> <include>**/*.properties</include> <include>**/*.yml</include> <include>**/*.xml</include> <include>**/*.tld</include> </includes> <filtering>false</filtering> </resource> <resource> <directory>src/main/java</directory> <includes> <include>**/*.properties</include> <include>**/*.xml</include> <include>**/*.tld</include> </includes> <filtering>false</filtering> </resource> <resource> <directory>src/main/view</directory> <includes> <include>**/*.*</include> </includes> <filtering>false</filtering> </resource> </resources>
完整pommaven
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>cn.mldn</groupId> <artifactId>microboot</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>pom</packaging> <name>microboot</name> <url>http://maven.apache.org</url> <properties> <jdk.version>1.8</jdk.version> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>1.5.4.RELEASE</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <build> <finalName>microboot</finalName> <resources> <resource> <directory>src/main/resources</directory> <includes> <include>**/*.properties</include> <include>**/*.yml</include> <include>**/*.xml</include> <include>**/*.tld</include> </includes> <filtering>false</filtering> </resource> <resource> <directory>src/main/java</directory> <includes> <include>**/*.properties</include> <include>**/*.xml</include> <include>**/*.tld</include> </includes> <filtering>false</filtering> </resource> <resource> <directory>src/main/view</directory> <includes> <include>**/*.*</include> </includes> <filtering>false</filtering> </resource> </resources> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>${jdk.version}</source><!-- 源代碼使用的開發版本 --> <target>${jdk.version}</target><!-- 須要生成的目標class文件的編譯版本 --> <encode>${project.build.sourceEncoding}</encode> </configuration> </plugin> <plugin> <!-- 該插件的主要功能是進行項目的打包發佈處理 --> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <!-- 設置程序執行的主類 --> <mainClass>cn.mldn.microboot.StartSpringBootMain</mainClass> </configuration> <executions> <execution> <goals> <goal>repackage</goal> </goals> </execution> </executions> </plugin> </plugins> </build> <modules> <module>microboot-base</module> <module>microboot-advance</module> </modules> </project>
三、 隨後能夠將項目進行打包處理,在打包以後也能夠動態切換 profile 配置;spring-boot
· Maven 打包:clean package;工具
· 隨後若是如今要使用默認的 profile 就正常執行:java -jar microboot.jar;測試
難道之後每一次訪問都須要從新打包嗎?也就是說爲了方便用戶的動態進行 profile 切換(進行從新輸入以前能夠經過ctrl+c切換),能夠在程序執行的時候設置一個 執行的處理參數:java -jar microboot.jar --spring.profiles.active=beta網站
四、 【趣味問題】如今當運行完成以後你會發現程序之中默認採用的圖標是 Spring 的圖標。
可是不少的公司應該去更換爲本身的圖標,因此這個時候能夠單獨準備出一個 ico 配置文件,能夠將這個配置文件拷貝到 「src/main/view/static/images」目錄之中,隨後在頁面之中進行引入:
<link rel="icon" type="image/x-icon" href="/images/study.ico"/>
message_show.html
<!DOCTYPE HTML> <html xmlns:th="http://www.thymeleaf.org"> <head> <title>SpringBoot模版渲染</title> <link rel="icon" type="image/x-icon" href="/images/mldn.ico"/> <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/> </head> <body> <p th:text="'官方網站:' + ${url}"/> <p th:text="'用戶名:' + ${mid}"/> </body> </html>
五、 在進行 profile 配置的時候特別須要注意一點,若是你使用的是 application.properties 配置,這樣的配置處理過程是不同的, 也就是說若是你基於屬性文件完成配置,那麼就須要編寫多個屬性文件內容:
隨後仍是須要有一個公共的 application.properties 配置文件出現,用於指派可使用的 profile 配置:
spring.profiles.active=beta
application.properties
spring.profiles.active=beta
application-beta.properties
spring.messages.basename=i18n/Messages,i18n/Pages server.port=9090
application-dev.properties
spring.messages.basename=i18n/Messages,i18n/Pages server.port=8080
application-product.properties
spring.messages.basename=i18n/Messages,i18n/Pages server.port=80
若是如今將開發程序打成*.jar 文件的話,也一樣能夠在執行的時候使用「--spring.profiles.active=beta」動態指派不一樣的 profile 配置文件。