前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Spring Boot 配置文件

Spring Boot 配置文件

作者头像
LCyee
发布2020-08-05 17:42:34
4980
发布2020-08-05 17:42:34
举报

0x01 前言

springboot 项目创建完成后,在 resources目录下会生成一个 application.properties 文件,用于编写springboot 项目的配置。

但官方不推荐使用.properties 的配置文件,所以我们这里把原来的 application.properties 修改为yaml 配置文件,即重命名为 application.yaml

0x02 yaml的基本语法

注意:yaml对空格的要求十分严格

对象形式

代码语言:javascript
复制
student:
  name: b5ck
  age: 18

# 行内写法
student2: {name: b5ck,age: 3}

数组形式

代码语言:javascript
复制
pets:
  - cat
  - dog
  - pig

# 行内写法
pets2: [cat,dog,pig]

0x03 修改默认配置

修改 springboot 默认的监听端口

application.yaml

代码语言:javascript
复制
server:
	port: 8888

重启 springboot 项目,监听端口修改为 8888

0x04 yaml可以直接给实体类赋值

先在pom.xml中导入spring的配置处理器

代码语言:javascript
复制
<!--导入配置文件处理器,配置文件进行绑定就会有提示-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-configuration-processor</artifactId>
    <optional>true</optional>
</dependency>

创建两个实体类 PersonDog

Dog实体类

代码语言:javascript
复制
@Component // 将实体类添加到spring组件内
public class Dog {
    private String name;
    private Integer age;
    // 使用Alt+ Inster快速构建有参、无参构造函数以及setter和getter、toString方法
}

Person 实体类

代码语言:javascript
复制
@Component
@ConfigurationProperties(prefix = "person")  //与配置文件中的对象所关联
public class Person {
    private String name;
    private Integer age;
    private Boolean happy;
    private Date birth;
    private Map<String,Object> maps;
    private List<Object> lists;

    // 创建Dog类对象
    private Dog dog;
	// 使用Alt+ Inster快速构建有参、无参构造函数以及setter和getter、toString方法
    
}

从以上两个实体类中我们用到了两个注解:

  • @Component 注解表示将这个实体类添加到spring组件中
  • @ConfigurationProperties(prefix = "person") 注解用于与配置文件的对象进行绑定,perfix对应的值为绑定的对象名称,目前该注解使实体类绑定配置文件中的person对象。

接下来我们在配置文件 application.yaml中设置我们实体类的属性值

代码语言:javascript
复制
person:
  name: b5ck
  age: 18
  happy: false
  birth: 2020/01/17
  maps: {k1: v1,k2: v2}
  lists:
    - code
    - music
    - girl
  dog:
    name: 123
    age: 3

基本配置已完成,接下来我们在 srpingboot 单元测试中输出我们的实体类,看下属性的值是否设置成功

单元测试类

代码语言:javascript
复制
@SpringBootTest
class ApplicationTests {

    @Autowired  //自动装配实体类
    private Person person;

    @Test
    void contextLoads() {
        System.out.println(person);   //输出对象信息
    }
}

构建并运行单元测试, 得到输出的实体类信息

0x05 在yaml中使用表达式

代码语言:javascript
复制
person:
  name: b5ck.${random.uuid} # 随机uuid
  age: ${random.int}  # 随机数
  happy: false
  birth: 2020/01/17
  maps: {k1: v1,k2: v2}
  lists:
    - code
    - music
    - girl
  dog:
    name: 旺财
    age: 3

0x06 JSR303 校验

spring-boot中可以用@validated来校验数据,如果数据异常则会统一抛出异常,方便异常中心统一处理。我们这里来写个注解让我们的name只能支持Email格式

代码语言:javascript
复制
@Component //注册bean
@ConfigurationProperties(prefix = "person")
@Validated  //数据校验
public class Person {

    //@Value("${person.name}")
    @Email //name必须是邮箱格式
    private String name;
}

还有很多内置校验规则,也可以自定义正则表达式进行校验,这里我们不进行详细的举例

更多校验案例参考: (https://blog.csdn.net/qq_28867949/article/details/78922520)

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-01-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 0x01 前言
  • 0x02 yaml的基本语法
  • 0x03 修改默认配置
  • 0x04 yaml可以直接给实体类赋值
  • 0x05 在yaml中使用表达式
  • 0x06 JSR303 校验
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档