工作小总结

Spring Boot +JPA怎么配置多数据源?

有时候,我们需要在项目中配置多数据源。项目框架是SpringBoot+JPA,怎么配置多数据源呢?一、配置文件添加多数据源配置文件中配置多个数据源。如下:server:  port: 8841spring:  datasource:    admin:     

有时候,我们需要在项目中配置多数据源。项目框架是Spring Boot+JPA,怎么配置多数据源呢?

一、配置文件添加多数据源

配置文件中配置多个数据源。如下:

server:
  port: 8841
spring:
  datasource:
    admin:
      url: jdbc:sqlite:D:\data\db\back.db    
      driver-class-name: org.sqlite.JDBC
      username:
      password:
    other:
      url:  jdbc:sqlite:D:\data\db\my-test.db
     
      driver-class-name: org.sqlite.JDBC
  jpa:
    database: mysql
    show-sql: true
    hibernate:
      ddl-auto: update

说明:凯哥使用的是SQLite。MySQL数据库配置类似。如果需要配置的是MySQL多数据源,就改吧改吧。


二、代码添加

2.1:获取数据库配置信息的类

package com.kaigejava.config.datasource;

import lombok.Data;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

/**
 * @author kaigejava
 * @description         获取多数据源属性的
 * @company kaigejava
 * @since 2023/6/14 14:41
 */
@Component
@Data
public class DataSourceProperties {

    /**
     * admin库相关的数据库配置
     */
    @Value("${spring.datasource.admin.url}")
    private String adminUrl;
    @Value("${spring.datasource.admin.driver-class-name}")
    private String adminDriverClass;


    /**
     * other库相关的配置
     */
    @Value("${spring.datasource.other.url}")
    private String otherUrl;
    @Value("${spring.datasource.other.driver-class-name}")
    private String otherDriverClass;

}


2.2:数据源配置相关的类

package com.kaigejava.config.datasource;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.jdbc.DataSourceBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;

import javax.annotation.Resource;
import javax.sql.DataSource;

/**
 * @author kaigejava
 * @description
 * @company kaigejava
 * @since 2023/6/14 17:17
 */
@Configuration
public class DataSourceConfig {
    @Resource
    DataSourceProperties dataSourceProperties;

    @Bean
    @ConfigurationProperties("spring.datasource.one")
    @Primary
    DataSource dsOne() {
        return DataSourceBuilder.create()
                .url(dataSourceProperties.getAdminUrl())
                .driverClassName(dataSourceProperties.getAdminDriverClass())
                .build();
    }

    @Bean
    @ConfigurationProperties("spring.datasource.two")
    DataSource dsTwo() {
        return DataSourceBuilder.create()
                .url(dataSourceProperties.getOtherUrl())
                .driverClassName(dataSourceProperties.getOtherDriverClass())

原创不易,完成人机校验,阅读全文

相关推荐