Spring Boot Bean自动装配
Spring Boot Bean自动装配
1. 全局配置文件
修改Spring Boot自动配置的默认值,Spring Boot在底层自动加载
-
application.yml
-
application.properties
2. Bean自动装配原理
(1) Spring Boot启动时加载主配置类,开启了自动配置功能@EnableAutoConfiguration
(2) @EnableAutoConfiguration
作用: 将类路径下META-INF/spring.factories
里面配置的所有EnableAutoConfiguration
的值(自动装配类)加入到执行计划中
(3) 每一个自动装配类进行自动配置功能
3. YAML规则
(1) 双引号
不会转义特殊字符,特殊字符或作为本身想要表达的意思
name: "zhangsan \n lisi"
输出 zhangsan 换行 lisi
单引号
会转义特殊字符,特殊字符最终只是一个普通的字符串数据,如:
name: 'zhangsan \n lisi'
输出 zhangsan \n lisi
(2) 支持松散的结构
family-name
= familyName
= family_name
(3) 占位符
1 | ${random.value} |
4. 获取自定义配置
(1) @Value("${}")
实现了单个属性的注入
(2) 对于复杂的数据结构,使用@ConfigurationProperties
获取配置值
1 | package com.haven.model.yaml; |
(3) 两种注解区别
@ConfigurationProperties | @Value | |
---|---|---|
功能 | 批量注入属性 | 一个个指定 |
松散语法绑定 | 支持 | 不支持 |
SpEL | 不支持 | 支持 |
复杂数据类型嵌套 | 支持 | 不支持 |
JSR303数据校验 | 支持 | 不支持 |
5. 配置文件注入值数据校验
(1) 在需要校验的属性装配类上加@Validated
注解
(2) 数据校验注解列表
(3) 若验证失败,会出现BindValidationException
异常
6. Profile不同环境下不同配置
优先级: 外部大于内部,特指大于泛指
- application.yml 全局配置文件
- application-dev.yml 开发环境配置文件
- application-test.yml 测试环境配置文件
- Application-prod.yml 生产环境配置文件
(1) 配置application.yml
设置spring.profiles.active
指定使用哪一个配置文件。
优先级以下面的dev/test/prod yml为优先
1 | spring: |
(2) 通过命令行启动
1 | java -jar SpringBoot01HelloWorld-1.0-SNAPSHOT.jar --spring.profiles.active=dev |
(3) IDEA设置Program Arguments
(a) Edit Configuration --> Environment --> Program Argument
1 | --spring.profiles.active=dev |
(b) Edit Configuration --> Environment --> VM options
1 | -Dspring.profiles.active=dev |
7. 项目内部配置文件加载位置
spring boot会扫描以下位置的application.properties / application.yml文件作为spring boot的默认配置文件
1 | -file:./config/ |
以上优先级从高到低,所有位置的文件都会被加载;高优先级会覆盖低优先级
8. 配置文件敏感字段加密
(1) 与spring boot整合
1 | <!-- https://mvnrepository.com/artifact/com.github.ulisesbocchio/jasypt-spring-boot-starter --> |
(2) 需要加密的地方,使用ENC()
进行包裹处理
(3) 在配置文件中设置密钥