application.properties 赋值
映射名 + 属性
如:student.name / student.age
application.yml 赋值
@value 注解 赋值
无论什么类型,都得加上 “”
绑定
示例 | @ConfigurationProperties(yml/properties) | @Value(“xx”) |
注解 | @ConfigurationProperties | @Value |
注值 | 批量注入 | 单个 |
松散语法 | 支持 | 不支持 |
SpEL(spring表达式) | 不支持 | 支持 |
JSR303数据校验 | 支持 | 不支持 |
注入复杂类型 | 支持复杂类型 | 不支持复杂类型 |
简单类型
8个 + String + Date
什么是松散语法
例如:属性名字为 userName ,松散写法为:user-name,其在配置文件中等价
什么是SpEL
简言之,就是写取出已在配置文件中赋值过的,属性的值
例如:在 properties中配置了
student:
uname: kj
使用SpEL 可以在@Value 中取出。格式为:“${student.name}”
SpEL
这样写可以取得到properties 中的值
JSR303数据校验
注解配置
观察检测结果
@PropertySource
系统默认会加载application.properties/application.yml 文件的数据,但如果想要获取非系统默认配置文件中的值,就需要@PropertySource
例子:
- 将application.properties 改名为 -> conf.properties
- 在JavaBean 类中加上 @PropertySource(“value={“classpaht:conf.properties”}”) 就可以让系统识别该文件
注意:该注解只会识别 .properties 后缀的文件,不能够识别 .yml文件
ImportResource
spring boot 自动装配/自动配置
spring 等配置文件<bean>
,默认会被spring boot 自动给配置好</bean>
如果要自己编写 spring 等配置文件,spring boot 能否识别?
默认是不识别的。如果需要系统识别,则需要在spring boot 主配置类上,通过@ImportResource 指定配置文件的路径
加上了这一句之后,系统就能识别spring 的配置文件了
但是不推荐手写spring 配置文件
配置:xml 配置文件,通过注解配置
spring boot 推荐使用注解方式进行配置:写一个类,@Configuration @Bean
加载spring 配置类,通过@Configuration 和 @Bean
- 创建一个 spring.xml 并配置
- 在测试类中 通过@Autowired 引入
- 创建一个配置类 AppConfig.java,在类的前面配上注解 @Configuration;实现类下的方法,这个方法对应配置类中声明的id名字
- 调用测试类测试,通过解析xml 文件,对 中的id 的字符串的映射,来确定执行的方法。
- 测试成功
随机占位符
使用方法
- 在properties/yml 中给属性赋值时可以使用
例如:
student:
name: ${random.value} #表示随机字符串
- yml 调用 properties 中的值时
properties:
student.user.name=wuyifan
yml:
student:
name: ${student.user.name}
就可以调用 properties 中的值了
深入
如果传值失败,可以设置默认值
例如:
student:
name: {student.user.name:Van Darkhomle}