目录
1.配置文件有两种 .properties 或者 .yaml
4.1可以使用@Value("XXXX")来 单个赋值。在测试类中打印出来。
4.2.1 通过注解@ConfigurationProperties(prefix = "person") 绑定yaml中的参数给实体类赋值。(必须是使用了@Component( 组件)再用这个功能)
@PropertySource(value = "classpath:XXXXX.properties") 属性资源
5.yaml可以使用一些特殊语法,yaml除了可封装实体类,还支持占位符 ${ }
6. yaml中支持复杂类型的封装,支持JSR303数据校验,支持松散语法。
根据【狂神说Java】SpringBoot最新教程IDEA版通俗易懂_哔哩哔哩_bilibili
https://www.bilibili.com/video/BV1PE411i7CV?p=8 学习之后的知识点总结:
1.配置文件有两种 .properties 或者 .yaml
SpringBoot的全局配置文件文件名是固定的,可以使用 application.properties 或者application.yaml 。可以同时存在两个配置文件。在配置文件中我们可以修改SpringBoot自动配置的默认值。
官方也建议使用yaml文件。
存在两种自定义的properties文件时,系统会默认遵从application.properties优先,即使你已经使用
@PropertySource(value = "classpath:shiluying.properties")
指定了配置文件,也不起作用。
2.重点“yaml具体语法”介绍
参看:YAML 入门教程 | 菜鸟教程 https://www.runoob.com/w3cnote/yaml-intro.html
3.yaml语法使用示例
yaml基本语法
- 大小写敏感
- 使用缩进表示层级关系
- 缩进不允许使用tab,只允许空格
- 缩进的空格数不重要,只要相同层级的元素左对齐即可
- '#'表示注释
而properties 只能保存键值对。
4.强大之处在于使用yaml可以直接给实体类赋值
在pojo包下创建实体类,设置属性、有参和无参构造器、getter和setter方法、toString方法。
为了让这个实体类能被扫描到,要加上@Component( 组件),把实体类添加到SpringBoot组件中。
例如:
@Component
public class Person {... }
然后,
4.1可以使用@Value("XXXX")来 单个赋值。在测试类中打印出来。
4.2.1 通过注解@ConfigurationProperties(prefix = "person") 绑定yaml中的参数给实体类赋值。(必须是使用了@Component( 组件)再用这个功能)
不配置依赖就会提示报红。
但是,不配置不会影响程序的运行。
把加了@ConfigurationProperties(prefix = "person") 注解的实体类和yaml中的参数person绑定起来。(ConfigurationProperties配置属性,prefix 前缀,称谓)
再通过测试类输出就可以看到结果。
4.2.1.1 在Spring官网上也能找到这个spring-boot-configuration-processor依赖。
<!--配置注解处理器-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
在官网上进入Spring Boot 然后找到LEARN-》找一个版本点击Reference Doc.如下:
会看到下面的部分,“配置元数据: 元数据被用于描述配置属性。”点进去就能找到了。
配置注释处理器,
要使用处理器,请包含对spring-boot-configuration-processor
.
对于 Maven,依赖项应声明为可选,如下例所示:
4.2.2 properties配置文件在写中文时会乱码。另外,当存在两个自定义的properties文件时,系统会默认遵从application.properties优先,即使你已经使用@PropertySource(value = "classpath:shiluying.properties")指定了配置文件,也不起作用。
4.3 给实体类 加载 “指定配置文件” ,
@PropertySource(value = "classpath:XXXXX.properties") 属性资源
然后使用Spring的EL表达式取出配置文件的值。
@Value("${name}")
private String name;
例如:
@PropertySource(value = "classpath:shiluying.properties")
@Value("${name}")
5.yaml可以使用一些特殊语法,yaml除了可封装实体类,还支持占位符 ${ }
6. yaml中支持复杂类型的封装,支持JSR303数据校验,支持松散语法。
使用JSR303数据校验,需要@Validated 和 默认的校验,还需要导入依赖。
不导入依赖,不能使用像@Email这样默认的校验注解。
@Validated //数据校验
public class Person {
@Email(message = "需要输入邮箱地址")
private String name;
<!--配置JSR303校验的依赖包 @Validated //数据校验 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
更加深入的使用JSR303校验请参考:
7. 多环境配置:
#多环境配置文件的选择,可以选择需要激活哪一个
server:
port: 8081
spring:
profiles:
active: dev
--- # 分割
server:
port: 8082
spring:
profiles: dev
---
server:
port: 8083
spring:
profiles: test