SpringBoot之配置文件

SpringBoot之配置文件

Scroll Down

配置文件

Spring Boot使用一个全局配置文件

  • APPlication.properties
  • application.yml
    配置文件放在src/main/resources目录或者类路径config

全局配置文件可以对一些默认配置值进行修改

配置文件的作用:

修改SpringBoot自动配置的默认值;
SpringBoot会在底层给我们自动配置好;

关于yaml:

yml是YAML语言的文件,以数据为中心,比json、xml等更适合做配置文件
yaml配置例子:

server:
   port: 8888

xml配置例子:

<server>
     <port>8888</port>
</server>

yaml配置文件的语法格式:

语法:

1.key:(空格)value
2.通过垂直对齐,指定层次关系
3.注释是#

配置属性语法:

简单类型:
属性名:空格 直接写值

Map类型:
{key: value,key: value,....}

数组类型和集合类型:
属性名:
     -(空格)属性值
     -(空格)属性值

对象类型:
对象名:
     对象属性名:属性值

注:上述Map类型,数组类型和集合类型是行内写法,集合和数组类型可以直接写成下面的形式

属性名:[value,value](中括号可以省略)

Map类型可以直接缩进写:
Map属性名:
         key:value
         key:value
对象类型跟Map类型写法是一样的

还需要将yaml中的值绑定到属性对应类中:
   在对应类前加@ConfigurationProperties(prefix="student")
还要加一个@Component,将此javabean添加到spring容器中

注:yaml中可以不写引号,但是双引号中的转义字符会生效,其他的单引号或不加引号都不会生效

另外一种注入值的方式:再累中定义属性的地方加上@Value("")注解

@ConfigurationProperties(prefix="")与@Value("")的区别

@ConfigurationProperties(prefix="")@Value("")
注入值:批量注入单个注入
松散语法:支持不支持
springEL表达式不支持支持
JSR303数据校验支持不支持
注入复杂类型支持不支持

什么是松散语法?
 可以将驼峰命名方法用xx-xx的形式代替
比如,nickName------nick-name,两者可以同时用

properties配置文件

properties配置文件内容的写法是:

属性名=属性值
对象名.属性名=属性值

总结

1.每一个XxxAutoConfiguration类都有很多条件@ConditionalOnXxx,当这些条件满足时,则此配置自动装配生效,但是我们可以手工修改自动装配,
在XxxPreperties文件中的prefix.属性名=value
2.全局配置文件中的key,来源于某个Properties文件中的prefix+属性名
SpringBoot就是通过XxxAutoConfiguration实现的自动装配