第三章:SpringBoot配置深刻-5. profile配置

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

相关文章
相关标签/搜索