SpringBoot
配置文件,对于SpringBoot
的默认配置来讲,若是默认配置不适用实际运用的场景状况下,可使用配置文件覆盖默认配置,好比内嵌的Tomcat
默认端口是8080
,就可使用配置文件将默认配置覆盖。另外咱们在项目中,有可能封装一些通用SDK,也可使用配置文件来处理。SpringBoot
支持的配置能够查看官网文档:application-propertiesjava
SpringBoot
提供了两种配置文件类型:properties
和yml
(而yml
也能够写成yaml
)。默认配置文件名称为:application
,放在resources
目录下。这两种配置文件在同一级的优先级为:properties
>yml
>yaml
spring
好比把默认端口改成8088
,上面访问路径为http://localhost:8080/v1/index
,按照以前的习惯,一般是主机后面会跟项目名,也能够经过配置文件配置。数组
使用yaml
方式配置:app
server: servlet: context-path: /spring-boot port: 8088
注意:
yaml
的配置方式:
号后面必须有空格。ide
简单介绍下yaml
的基本语法:spring-boot
:
号后面),做为分隔符Tab
键,只容许使用空格(由于各个系统Tab
对应的空格数目可能不一样,致使层级混乱)#
表示注释,从这个字符到行尾,都会被解析器忽略yaml
的数据格式:测试
person: name: lisi # 行内写法 person: {name: lisi}
names: - zhangsan - lisi # 行内写法 names: [zhangsan,lisi]
msg1: `hello \n world` #单引号忽略转义字符 msg2: "hello \n world" #双引识别转义字符
yaml
参数引用:
有时候在配置一个参数,想被多个地方引用,能够这样配置:插件
name: zhangsan person: name: ${name} #引用上面定义的name的值
使用properties
配置:命令行
server.servlet.context-path=/spring-boot server.port=8088
注意:配置
context-path
必须是/
开头日志
启动项目从日志输出:
Tomcat started on port(s): 8088 (http) with context path '/spring-boot'
这个时候咱们的访问路径就是:http://localhost:8088/spring-boot/v1/index
在实际开发时,有时候须要作一些初始化的自定义配置,那么怎么在代码里面获取到配置文件的自定义配置,好比自定义配置name: zhangsan
。读取配置内容有以下三种方式:
@Value
@Value("${name:lisi}") private String name; @GetMapping(path = "") public String index(){ return String.format("Hello %s Spring Boot!",name); }
访问结果:Hello zhangsan Spring Boot!
,使用@Value
注解就能够获取配置文件的自定义配置,:
后面表示默认值,若是配置文件没有配置,则取默认值。
@Autowired private Environment environment; System.out.println(String.format("使用Environment获取配置name:%s",environment.getProperty("name")));
输出结果:使用Environment获取配置name:zhangsan
User
类@Component @ConfigurationProperties(prefix = "user") @Data public class User { private String name; private int age; private List<String> address; @Override public String toString() { return "User{" + "name='" + name + '\'' + ", age=" + age + ", address=" + address + '}'; } }
必须使用@Component
和@ConfigurationProperties
注解,@Data
是使用了lombok
插件。若是须要使用lombok
,须要在IDEA安装Lombok
插件,引入lombok
依赖
<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </dependency>
配置文件以下配置:
user: name: zhangsan age: 12 address: - sichuang - hunan
在controller
中使用
@Autowired private User user; System.out.println(user.toString());
输出结果:User{name='admin', age=12, address=[sichuan, hunan]}
在实际开发场景中,咱们通常有开发、测试、生产环境,每一个环节的某些配置会不同,那么怎么来解决不一样环境配置的问题,下面详细介绍使用Profile
多环境的切换。
profile
多环境配置方式:
profile
文件的方式,提供多个配置文件,每一个文件表明一种环境。
yml
多文档方式:
---
分割不一样配置profile
激活多环境方式:
spring.profiles.active=dev
IDEA
的VM options
指定:-Dspring.profiles.active=dev
java -jar xxx.jar --spring.profiles.active=dev
IDEA
下的Program arguments
指定:--spring.profiles.active=dev
多文件的方式这里就不作操做了,上面介绍已经说明了,按照标准的文件格式命名就行,根据实际状况选择是用properties
仍是yml
的方式。下面介绍下yml
多文档的方式:
# 开发环境 --- spring: config: activate: on-profile: dev server: port: 8081 # 测试环境 --- spring: config: activate: on-profile: test server: port: 8082 # 生产环境 --- spring: config: activate: on-profile: prod server: port: 8082 --- # 公用配置 server: servlet: context-path: /spring-boot
至于激活的方式,就参考上面的测试便可。