一、创建一个 springboot 项目
1、创建好之后的 sprinboot 项目 目录结构如下
2、application.properties 就是项目的配置文件
配置文件有两种格式,默认就是 application.properties 格式,
另外一种格式就是 application.yml
两种格式的区别
properties 是以 ”.“ 做分割符
yml 是以 “:” 做分隔符, “:” 后面必须要有空格,yml 是天然的树状结构
yml 如果两个属性,是在同一个父级,就不用再写父级,,比如下图中设置的端口、地址
而 properties 则都需要写全
yml 每一级之间必须要换行,并且第二级前面必须要 tab 缩进,比如下图中的 server 和 port,如果是同级就不用进行缩进,比如下图中的 port 和 address
比如我分别在两个不同配置文件里面设置端口、地址
properties
yml
3、使用 @value 注解获取配置文件中的属性
比如说我在启动类中获取配置文件中的 address
@Value("${server.address}")
package com.wxw.springboot01;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@SpringBootApplication
public class Springboot01Application {
@Value("${server.address}")
private String address;
public static void main(String[] args) {
SpringApplication.run(Springboot01Application.class, args);
}
@RequestMapping("hello")
public void hello(){
System.out.println(address);
}
}
浏览器访问 http://localhost:8081/hello 地址
控制台就会输出
二、使用配置文件中的 profile 切换多配置
1、使用配置文件实现多配置文件切换
比如说实际开发项目的过程中,我们可能有多个代码环境,这个时候就需要进行切换了
一个开发环境(dev),一个测试环境(test),一个生产环境(prod)
配置文件中的 “—” 三个杠,代表分割文档块的作用,如下图,就相当于我建立了三个配置文件,分别是 dev、test、prod
spring.profiles.active 可以指定使用哪个配置文件
server:
address: localhost
#指定使用 dev 配置文件
spring:
profiles:
active: dev
---
spring:
profiles: dev
server:
port: 8081
---
spring:
profiles: test
server:
port: 8082
---
spring:
profiles: prod
server:
port: 8083
启动项目,可以看到控制台有如下信息打印,表示当前使用 dev 环境,端口 8081
如果觉得三个文档块放在一个配置文件里面,后面配置多了看起来可能不方便,还可以直接创建三个配置文件,效果一样
三、使用配置文件中的 profile + maven 切换多配置
1、先贴上完整代码
pom 文件中加入以下内容
<profiles>
<!--开发环境-->
<profile>
<id>dev</id>
<properties>
<!--对应每个不同配置文件 profiles 的名称-->
<spring.active>dev</spring.active>
</properties>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<!--测试环境-->
<profile>
<id>test</id>
<properties>
<!--对应每个不同配置文件 profiles 的名称-->
<spring.active>test</spring.active>
</properties>
<activation>
<activeByDefault>false</activeByDefault>
</activation>
</profile>
<!--生产环境-->
<profile>
<id>prod</id>
<properties>
<!--对应每个不同配置文件 profiles 的名称-->
<spring.active>prod</spring.active>
</properties>
<activation>
<activeByDefault>false</activeByDefault>
</activation>
</profile>
</profiles>
spring.active 是自己命名的,下面配置文件取用此属性的值
activeByDefault 根据属性的 true 或者 false 确定使用哪个配置文件,如当前使用的是 dev
配置文件内容
server:
address: localhost
spring:
profiles:
active: @spring.active@
---
spring:
profiles: dev
server:
port: 8081
---
spring:
profiles: test
server:
port: 8082
---
spring:
profiles: prod
server:
port: 8083
配置文件中直接通过 @spring.active@ 获取 pom 文件里面指定为 true 的配置文件
这样,如果后面需要切换配置文件,只需要更改 pom 文件里面的 activeByDefault 属性就可以了,比如要使用 test 就将此属性改为 true,使用 prod 就将此属性改为 true,记得其他的配置都改为 false
2、使用 maven 打包项目时 指定配置文件
clean package -U -DskipTests=true -P dev
-P dev:如果项目中配置了 profile 切换配置文件环境的,按照这种方式打包就好了
dev 就是 pom 文件中 每个profile 中的 id
比如此处就是打包开发环境