在实际的开发之中,因为开发(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 配置文件。