配置文件

SpringBoot使用一个全局的配置文件 , 配置文件名称是固定的
application.properties 或 application.yml

application.properties:
  • 语法结构 :key=value
application.yml
  • 语法结构 :key:空格 value
配置文件的作用 :修改SpringBoot自动配置的默认值

spring怎么配置mybatis yml_配置文件

yaml相较于xml
  • 可以声明对象,数组。
  • 书写形式上接近于JavaScript中对象的写法
  • 对空格要求严格,这一点又比较像python

yaml文件更强大的地方在于,可以给实体类直接注入匹配值

注解注入

spring怎么配置mybatis yml_配置文件_02

yaml注入
  • 通过@ConfigurationProperties(prefix = “属性名”)注入
  • @ConfigurationProperties作用:将配置文件中配置的每一个属性的值,映射到这个组件中;告诉SpringBoot将本类中的所有属性和配置文件中相关的配置进行绑定参数 prefix = “person” : 将配置文件中的person下面的所有属性一一对应

加载指定的配置文件

  • 也可以不使用yaml文件进行赋值,可以指定properties文件进行赋值,文件名也没用要求,可以随意取
  • spring怎么配置mybatis yml_封装_03

  • 使用properties文件,如果赋值的属性值是中文,可能会出现乱码的情况,可以设置编码格式。
  • spring怎么配置mybatis yml_配置文件_04

配置文件占位符

  • 配置文件还可以编写占位符生成随机数

对比小结

  • @Value这个使用起来并不友好!我们需要为每个属性单独注解赋值,比较麻烦;我们来看个功能对比


@ConfigurationProperties

@Value

功能

批量注入配置文件中的属性

一个个指定

松散绑定(松散语法)

支持

不支持

SpEL

不支持

支持

JSR303数据校验

支持

不支持

复杂类型封装

支持

支持

  • 1、@ConfigurationProperties只需要写一次即可 , @Value则需要每个字段都添加
  • 2、松散绑定:在一般的配置文件赋值的过程中,要求属性名一一对应,不能出现写错的情况,否则就赋值(注入失败)为空,但是在yaml配置文件中,可以存在中划线和驼峰命名相互传值的情况,例如,在实体类里,属性名为firtName,在yaml文件中对应的属性名可以为first-name,last-name和lastName是一样的, - 后面跟着的字母默认是大写的。这就是松散绑定。
  • 3、JSR303数据校验 , 这个就是我们可以在字段是增加一层过滤器验证 , 可以保证数据的合法性
  • 4、复杂类型封装,yml中可以封装对象 , 使用value就不支持
结论:

配置yml和配置properties都可以获取到值 , 强烈推荐 yml;
如果我们在某个业务中,只需要获取配置文件中的某个值,可以使用一下 @value;
如果说,我们专门编写了一个JavaBean来和配置文件进行一一映射,就直接@configurationProperties,不要犹豫!