这是我参与11月更文挑战的第1天,活动详情查看:2021最后一次更文挑战
前言
本节介绍RuoYi-Vue
的ruoyi-admin
模块中的系统主页模块SysIndexController
部分的代码,这个接口中有意思的是RuoYiConfig
这个类,这是一个系统配置类,里面的一个注解ConfigurationProperties很有意思。
获取系统配置
我们平时使用application.yml
中的属性都是使用的@Value
,通过这种方式来拿到对应的配置文件中储存的属性
1 | java复制代码 @Value("${ruoyi.name}") |
它是在org.springframework.beans.factory.annotation
这里的,在@Value
注解下,我们需要将整个的属性名都写出来才可以使用这个属性,而我们接下来介绍的ConfigurationProperties
则省了我们一部分工作。
ConfigurationProperties
在class上使用
在这里这个注解是这么使用的
1 | java复制代码@Component |
和@Value
不同,它是在org.springframework.boot.context.properties
中的,通过指定前缀,我们就可以直接使用ruoyi
下的各种属性。
1 | yml复制代码# 项目相关配置 |
甚至在类中都不需要指定对应的属性二级名称,只要保证名称一一对应即可,相较于使用@Value
只能注入单值,@ConfigurationProperties
非常适合这种批量属性注入的情况,不过@ConfigurationProperties
不支持SpEL表达式,这里需要注意下。
在方法上使用
比较常见的就是在数据库主从或者读写分离时使用,Ruoyi中的数据库主从这里就用到了@ConfigurationProperties
这个注解。
1 | java复制代码 |
需要注意的是,如上图红线所示,当将该注解作用于方法上时,如果想要有效的绑定配置,那么该方法需要有@Bean注解且所属的Class需要有@Configuration注解。
本文转载自: 掘金