RuoYi-Vue 前后端分离版代码浅析-@ConfigurationProperties注解

共 1992字,需浏览 4分钟

 ·

2021-11-09 02:48

前言

本节介绍RuoYi-Vueruoyi-admin模块中的系统主页模块SysIndexController 部分的代码,这个接口中有意思的是RuoYiConfig 这个类,这是一个系统配置类,里面的一个注解ConfigurationProperties很有意思。

获取系统配置

我们平时使用application.yml中的属性都是使用的@Value,通过这种方式来拿到对应的配置文件中储存的属性

    @Value("${ruoyi.name}")
private String name ;
复制代码

它是在org.springframework.beans.factory.annotation这里的,在@Value注解下,我们需要将整个的属性名都写出来才可以使用这个属性,而我们接下来介绍的ConfigurationProperties则省了我们一部分工作。

ConfigurationProperties

在class上使用

在这里这个注解是这么使用的

@Component
@ConfigurationProperties(prefix = "ruoyi")
public class RuoYiConfig {
/**
* 项目名称
*/

private String name;
/**
* 版本
*/

private String version;
复制代码

@Value不同,它是在org.springframework.boot.context.properties中的,通过指定前缀,我们就可以直接使用ruoyi下的各种属性。

# 项目相关配置
ruoyi:
# 名称
name: RuoYi
# 版本
version: 3.7.0

复制代码

甚至在类中都不需要指定对应的属性二级名称,只要保证名称一一对应即可,相较于使用@Value只能注入单值,@ConfigurationProperties 非常适合这种批量属性注入的情况,不过@ConfigurationProperties不支持SpEL表达式,这里需要注意下。

在方法上使用

比较常见的就是在数据库主从或者读写分离时使用,Ruoyi中的数据库主从这里就用到了@ConfigurationProperties这个注解。


@Configuration
public class DruidConfig
{
@Bean
@ConfigurationProperties("spring.datasource.druid.master")
public DataSource masterDataSource(DruidProperties druidProperties)
{
DruidDataSource dataSource = DruidDataSourceBuilder.create().build();
return druidProperties.dataSource(dataSource);
}

@Bean
@ConfigurationProperties("spring.datasource.druid.slave")
@ConditionalOnProperty(prefix = "spring.datasource.druid.slave", name = "enabled", havingValue = "true")
public DataSource slaveDataSource(DruidProperties druidProperties)
{
DruidDataSource dataSource = DruidDataSourceBuilder.create().build();
return druidProperties.dataSource(dataSource);
}

复制代码

需要注意的是,如上图红线所示,当将该注解作用于方法上时,如果想要有效的绑定配置,那么该方法需要有@Bean注解且所属的Class需要有@Configuration注解。


作者:临时营地
链接:https://juejin.cn/post/7026373206944514056
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。



浏览 102
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报