spring boot的默认全局配置文件的用法以及属性注入
A、spring boot 是自动配置(约定),我们可以通过默认的全局配置文件对约定进行修改。全局配置文件有两个:
-
application.propertise:书写的方式是k=v
-
applcation.yml:
-
书写的方式是k: v(冒号之后必须只带一个空格)
-
通过 垂直对齐 的方式指定层次关系
-
属性注入
B、使用yaml全局配置文件实现对JavaBean属性注入:
(需要注意的是,JavaBean的属性名字必须与配置文件中的名字保持一致,yaml配置文件默认可以不写引号,其中双引号会将其中的转义字符进行转义,而单引号和没有引号则不会)
-
Map属性和对象类型的属性注入是使用大括号{},并且其中的键值对也是使用yml的书写方式;也可以使用垂直对齐的层次关系,让每个键值对都另起一行,使用k:空格v的方式。
-
数组和List、set的属性注入是每个数值另起一行使用减号+空格+属性;也可以使用中括号[]的形式并且中括号可以省略。
-
最后是在要注入属性的JavaBean中,通过添加@ConfigurationProperties(prefix=“ ”),将注入属性和此类相关联,还有就是添加@component注解将JavaBean添加中spring的容器中。
C、使用properties配置文件实现对JavaBean属性注入:
(当properties和yaml配置文件都对同一个属性值进行了配置时,会显示properties配置文件中的值。)
-
也必须先使用@ConfigurationProperties(prefix="")注解的prefix前缀对JavaBean中进行设置(命名),这样在properties配置文件中使用时就会有提示,从而方便属性值的注入。
-
直接在properties文件中,使用第一步设定的prefix前缀名,按照前缀名.属性名=value来进行属性值的注入
(还有一种属性注入的方式:我们可以使用@Value注解,直接在JavaBean中对相应的属性进行属性注入,不必使用@Configuration 注解。这种方式的优先级比properties配置文件的优先级低,但是三种方式互补,没有冲突)
属性注入方式的比较
@ConfigurationProperties | @Value | |
---|---|---|
注值 | 批量注值 | 单个注值 |
松散语法(即(驼峰命名)nickName = nick-name) | 支持 | 不支持 |
SpEl | 不支持 | 支持 |
数据校验(JSR303 校验) | 支持 | 不支持 |
注入复杂类型 | 支持 | 不支持 |