知识点总结:
一、yaml和properties(2)
注解是@PropertySource(“classpath:myproperties.yaml”)
这样就绑定了我们自定义的myproperties.yaml,然后还是要根据@Value()注解注入配置文件中的数据。 是不是又麻烦了呢…
总结:
yaml相比properties更简洁,拓展性更高!推荐使用。
注入配置的方式有三种,更推荐@ConfigurationProperties
有啥用?—>配置数据库相关url之类的,还有各种全局配置···直接改配置文件就生效了,完全不用动咱们的代码,是不是简化了很多工作呢
三、JSR303数据校验
使用场景:在用配置文件注入bean时,如果数据不合乎规范,这样该怎么办呢,比如将一个Email注入成了电话号码,都是String,不会报错,但会给系统带来安全性的bug。
如何使用:
在bean上加@Validated,然后再相关的成员上加对应校验注解即可,这里以@Email(message=“邮箱格式错误!!”)为例。
对于name要求是Email格式,但在配置文件中是qzh。运行走你,果然,报错了!
类似@Email这样的校验注解都有哪些呢?网上搜索
通过@Validated搭配各种校验注解,这样可以防止输入注入数据错误引发的BUG,我TM直呼NB!
四、多环境配置及配置文件优先级
在编写配置文件的时候,用application-{profile}.properties/yml 来指定多个环境版本,但spring只会默认使用application.properties/yml主配置文件;
所以在要在主配置文件中加入spring.profiles.active:{profile},profile参数和其他配置文件的application-“profile”的profile对应,就可以切换到指定的配置环境。
例子中我们假设选择test测试环境,可以看到在spring.profiles.active:test左侧有一个小对勾。
外部配置文件方式主要有四种,并对应不同的优先级。
(名字都得是application.yaml/properties)
file表示根目录项目名称
优先级1:项目路径下的config文件夹配置文件 file:./config/
优先级2:项目路径下配置文件 file:./
优先级3:资源路径下的config文件夹配置文件 classpath:/config/
优先级4:资源路径下配置文件 classpath:/
优先级由高到底,高优先级的配置会覆盖低优先级的配置