1,springboot 两种配置文件
-
application.properties
-
application.yml、application.yaml
两种配置方式,效果是一样的
application.properties
server.port=8081
server.servlet.context-path=/api
application.yml、application.yaml
server:
port: 8081
servlet:
context-path: /api
2,获取配置文件的值
一般配置文件中,配置内容为:1,第三方配置,2,个人自定义配置内容
个人自定义配置内容,在代码中都需要使用,下面是代码中使用配置文件值的两种方式:
-
@Value("${键名}"),如@Value("${ server.port}")
-
@ConfigurationPrperties(prefix="前缀"),如@ConfigurationPrperties(prefix="server")
3,绑值对比
区别 | @ConfigurationPrperties | @Value |
使用位置不同 | 标注在JavaBean上 | 标注在 JavaBean 的属性上 |
功能不同 | 批量绑定 | 只能单个绑定 |
松散绑定支持不同 | 支持松散,例: Person 属性为 firstName,配置文件支持:
| 不支持松散 |
SpEL支持不同 | 不支持 | 支持 |
复杂类型封装 | 支持素有类型数据封装, 例如 Map、List、Set、以及对象等; | 只支持基本数据类型封装, 例如字符串、布尔值、整数等类型 |
应用场景 | 专门映射一个 JavaBean | 只取一个值 |
@PropertySource
是把一些特定的与 SpringBoot 无关的配置,通过 @PropertySource 注解指向特定的配置文件
@PropertySource(value = "classpath:person.properties")//指向对应的配置文件
@Component
@ConfigurationProperties(prefix = "person")
这个地方测试用 yml 文件发现取不到值,所以只能用 .properties 格式的文件