JAVA和Nginx 教程大全

网站首页 > 精选教程 正文

若依开发框架解析笔记(5)-多数据源的应用

wys521 2024-12-03 14:08:06 精选教程 22 ℃ 0 评论

今天这篇笔记主要介绍一下若依框架下面多数据源的配置。

一个工程项目连接多个数据源,这个在实际开发中是很常见的一个需求,例如可以把一些长时间查询的sql放到备用数据库中,从而不影响主库的数据写入,也可以根据一定规则写入不同数据库,从而降低单个数据库的压力等等。

首先关注一下启动入口的Main方法

@SpringBootApplication(exclude = { DataSourceAutoConfiguration.class })
public class RuoYiApplication

这里在启动的时候禁止SpringBoot去读取yaml文件中spring.datasource中的配置信息,自动配置单数据源。后面会专门再写一篇笔记讲如何实现自定义数据源的,这篇文章主要讲在这个框架下面如何使用和配置多个数据源。

下一步关注一下application-druid.yml这个配置文件。这里是通过master和slave来区分主从数据源。要开启从库的数据源则要修改配置文件,把enabled改成true。

 druid:
            # 主库数据源
            master:
                url: jdbc:mysql://localhost:3306/ry-vue?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
                username: root
                password: 
            # 从库数据源
            slave:
                # 从数据源开关/默认关闭
                enabled: false
                url: 
                username: 
                password: 

下一步,我们要看一下关于这一部分的配置文件DruidConfig.java。通过注解@ConfigurationProperties来映射到配置文件中的spring.datasource.druid.slave这部分的配置,再通过属性条件注解来判断配置是否生效。

    @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);
    }

要使用备用数据源的话,框架里面已经定义了@DataSource这个注解,里面有枚举类型的DataSourceType。由此可见,这个框架对主从数据源这个功能做了很多层的封装。使用从库的话只要在Service层上面使用@DataSource(value = DataSourceType.SLAVE)这个注解就行了,其中注解可以直接使用在类上也可以使用在具体的方法上面。

@Target({ ElementType.METHOD, ElementType.TYPE })
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
public @interface DataSource
{
    /**
     * 切换数据源名称
     */
    public DataSourceType value() default DataSourceType.MASTER;
}
public enum DataSourceType
{
    /**
     * 主库
     */
    MASTER,

    /**
     * 从库
     */
    SLAVE
}

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表