Spring Boot初体验(二)配置文件

spring boot的使用为 ”习惯优于配置“,我们先来了解下配置文件。

spring boot的默认配置文件为application.properties,在上条博客中创建的项目中该文件为空白文件。但是在用于中配置文件可能或使用”.yml”结尾的文件。对于常规的“properties”文件我们接触的相对较多,就是简单的key:value的对应关系。yml文件为层级关系。


自定义配置


application.yml 配置如下:

1
2
3
top:
id: wsylp
name: 我的博客

top后面为冒号,id前面使用的是Tab键,后面紧跟冒号,然后空格,name也是如此

上面代码相当于properties下的:

1
2
top.id=wsylp
top.name=我的博客

BlobController代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
/**
* @Description:demo
* @Author: wsylp
* @Date: 2019/6/1 22:22
*/
@RestController
public class BlobController {

@Value("${top.id}")
private String id;


@Value("${top.name}")
private String name;


@RequestMapping("/top")
public String top(){
return id +"," +name;
}
}

@Value(“${top.id}”) : 为访问配置文件中的信息

输入地址:http://localhost:8080/top 可以看到信息为:wsylp,我的博客


配置文件整合


实际开发中配置文件用到的会很多,不会像SSM框架定义简单的数据库等少量信息,在后续的微服务中会大量用到配置文件。

官方提倡用对象来进行绑定,我们来定义一个BlobConfigBean

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
package top.wsylp.demo.model;


import lombok.Getter;
import lombok.Setter;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

/**
* @Description: 配置文件bean
* @Author: wsylp
* @Date: 2019/6/1 23:10
*/

@ConfigurationProperties(prefix = "top")
@Component
@Getter
@Setter
public class BlobConfigBean {

private String id;

private String name;


}

@Getter @Setter 为lombok的包锁提供的,需要进行依赖于安装lombok插件。

1
2
3
4
5
6
7
8
9
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>

其中一个为lombok,一个为配置文件注解所需要的包。

我们进行重新改造我们的Controller

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import top.wsylp.demo.model.BlobConfigBean;

/**
* @Description:demo
* @Author: wsylp
* @Date: 2019/6/1 22:22
*/
@RestController
public class BlobController {

@Autowired
BlobConfigBean blobConfigBean;

@RequestMapping("/top")
public String top(){
return blobConfigBean.getId()+"," +blobConfigBean.getName();
}
}

通过输入网址,我们可以看到与之前一样的结果。


命令行配置


项目打包后我们可以使用命令行来指定配置。

1
java -jar xx.jar

修改tomcat端口

1
java -jar xx.jar --server.port=9090

项目中可以禁掉命令行配置

1
SpringApplication.setAddCommandLineProperties(false)

配置文件优先级


application.properties和application.yml文件可以放在以下四个位置

  • 外置,在相对于应用程序运行目录的/congfig子目录里
  • 外置,在应用程序运行的目录里
  • 内置,在config包内
  • 内置,在Classpath根目录

src/main/resources/config下application.properties覆盖src/main/resources下application.properties中相同的属性

如果你在相同优先级位置同时有application.properties和application.yml,那么application.yml里面的属性就会覆盖application.properties里的属性


Profiles 配置


在官网文档中写到:Spring Profiles provide a way to segregate parts of your application configuration and make it be available only in certain environments. Any @Component or @Configuration can be marked with @Profile to limit when it is loaded, as shown in the following example:

大概意思为:profiles文件提供一种可以分离不同的应用,在指定的环境中进行使用。可以在@Component@Configuration上标记 @Profile

一句话就是:多环境配置

简单举例:

  • 数据库地址
  • redis地址
  • log日志级别
  • activiti地址

上述这些我们在开发中与测试中经常会遇到,我们要进行准备相同的配置文件,然后在上线时进行更改,这样比较麻烦,profiles为我们提供了方便

这里仅仅讲解使用多个配置文件形式,如果写在一起可读性不好

命名规则:application-{profile}.yml

application-dev.yml:

1
2
3
top:
id: wsylp 测试环境
name: 我的博客 测试环境

application-pro.yml:

1
2
3
top:
id: wsylp 生产环境
name: 我的博客 生产环境

在application.yml中进行指定

1
2
3
spring:
profiles:
active: dev //指定环境

运行代码:输入地址,返回信息为:“wsylp 测试环境,我的博客 测试环境”

将dev改为pro,返回信息为:“wsylp 生产环境,我的博客 生产环境”

在后期可以使用maven打包插件进行控制。

配置错误页面


spring boot页面显示错误页面比较简陋。此时需要进行处理。

我们这里先简单的使用下thymeleaf,定义error页面 : error.html放到templates文件夹下面

1
2
3
4
5
6
7
8
9
10
11
12
13
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<title>Oops!</title>

</head>
<html>
<div class="errorPage">
<p>错误页面,请求路径
(<span th:text="${path}"></span>).</p>
信息<p th:text="${'Details: ' + message}"></p>
</div>
</html>
</html>

在未进行配置前的错误页面与配置之后的页面

本文标题:Spring Boot初体验(二)配置文件

文章作者:wsylp

发布时间:2019年06月01日 - 15:06

最后更新:2020年01月02日 - 10:01

原始链接:http://wsylp.top/2019/06/01/Spring-Boot初体验(二)配置文件/

许可协议: 本文为 wsylp 版权所有 转载请保留原文链接及作者。

-------------本文结束感谢阅读-------------