我整理这部分资料,仅仅是查漏补缺,补充一些我不太熟悉的知识。
Spirng的宽松绑定规则
实体中的hostName
可以绑定如下配置:
mail.hostName
mail.hostname
mail.host_name
mail.host-name
mail.HOSTNAME
三种方式将一个Bean注入到Spring Context中
-
使用@Component注解(前提能够被@ComponentScan扫描)
-
通过Java Configuration实现相同的效果(要求PropertiesConfig可以被扫描到)
|
|
- 在
@EnableConfigurationProperties
注解中指定参数(这种方法我用的非常少)
|
|
至于如何选择这些方法,网上文章的有一些建议,但是我目前不计划采纳这些建议。
ignoreInvalidFields、ignoreUnknownFields配置
这两个属性配置@ConfigurationProperties
中,我觉得是有一定价值的,毕竟开发该属性配置信息的人最清楚如果配置文件中的配置值非法或者未知,该如何处理。
|
|
备注:ignoreUnknownFields未来可能会被删除,存在两个Properties绑定到一个命名空间上,其中一个类知道某个属性,而另一个不知道。(额,好吧)
支持@Validate
|
|
Duration与DataSize
SpringBoot内置支持从配置参数中解析durations和data size。duration和data size单位如下:
ns: 纳秒
us:微秒
ms:毫秒
s :秒
m :分
h :时
d :天
B
KB
MB
GB
TB
配置案例如下:
myapp.mail.pause-between-mails = 5s
myapp.mail.max-attachment-size = 1MB
对应的Java代码如下:
|
|
Duration和DataSize这些类我几乎没有用过,这也说明我开发的复杂业务逻辑还是太少了,对JAVA了解的还仅仅只是一个皮毛。
使用Spring Boot Configuration Processor完成自动补全
添加依赖如下:
|
|
需要重新Build一下(对应到Idea中就是重新启动一下),这时我们在编辑application.yml时就会有自动提示了。
Build后会生成一份json文件,相关的提示信息就存储在这份json文件中:
我一直在用这个依赖,但是从来不知道我们的自动提示功能是有这个依赖提供的,而且这个依赖还可以对我们自己开发的配置进行自动提示。
编辑配置属性为Deprecated
案例代码如下:
|
|
比较糟心的是,这个注解只能注册到方法上,为了使用这个注解我们还需要开发一个Getter方法,使用lombok时非常的不爽。
@ConfigurationProperties注解不支持SpEL表达式
我目前对SpEL表达式的需求还比较少,先持续关注一些这个问题。
@ConfigurationProperties、@PropertySource
@ConfigurationProperties支持和@PropertySource结合,读取指定文件,博客上说只能用于properties文件,但是我记得在我的实验中,貌似也是支持yaml文件的。
我目前对该技术没有太大的需求,所以暂时不研究。
@ConfigurationProperties与@Value的对比
@Value与@ConfigurationProperties涉及到的源码
|
|
这是好东西,深入学习SpringBoot是没有办法避免研究这些的。