当前位置: 首页 > news >正文

Spring Boot中如何配置和使用多数据源

Spring Boot中如何配置和使用多数据源

大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!今天,我们将深入探讨如何在Spring Boot应用中配置和使用多数据源,以满足复杂应用场景下的数据管理需求。

1. 引言

在许多现代应用中,数据存储和管理往往需要使用多个数据库,每个数据库可能有不同的访问权限、数据结构或者用途。Spring Boot提供了强大的支持来配置和管理多个数据源,使得开发者能够轻松地实现多数据源的配置和使用。

2. 准备工作

在开始之前,请确保你已经安装了以下软件和组件:

  • Java开发环境
  • Spring Boot框架
3. 创建Spring Boot项目

首先,让我们创建一个基本的Spring Boot项目。假设我们的包名是cn.juwatech.multidatasourcedemo

package cn.juwatech.multidatasourcedemo;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication
public class MultiDataSourceDemoApplication {public static void main(String[] args) {SpringApplication.run(MultiDataSourceDemoApplication.class, args);}
}
4. 配置多数据源

application.properties中配置多个数据源的连接信息:

# 数据源1
spring.datasource.first.url=jdbc:mysql://localhost:3306/first_db
spring.datasource.first.username=root
spring.datasource.first.password=secret
spring.datasource.first.driver-class-name=com.mysql.jdbc.Driver# 数据源2
spring.datasource.second.url=jdbc:mysql://localhost:3306/second_db
spring.datasource.second.username=root
spring.datasource.second.password=secret
spring.datasource.second.driver-class-name=com.mysql.jdbc.Driver
5. 创建多数据源配置类

编写一个配置类,分别配置和注入多个数据源:

package cn.juwatech.multidatasourcedemo.config;import javax.sql.DataSource;
import org.springframework.boot.autoconfigure.jdbc.DataSourceBuilder;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;@Configuration
public class DataSourceConfig {@Bean(name = "firstDataSource")@ConfigurationProperties(prefix = "spring.datasource.first")public DataSource firstDataSource() {return DataSourceBuilder.create().build();}@Bean(name = "secondDataSource")@ConfigurationProperties(prefix = "spring.datasource.second")public DataSource secondDataSource() {return DataSourceBuilder.create().build();}
}
6. 创建JPA Repository

为每个数据源创建对应的JPA Repository接口:

package cn.juwatech.multidatasourcedemo.repository.first;import cn.juwatech.multidatasourcedemo.model.first.FirstEntity;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;@Repository
public interface FirstEntityRepository extends JpaRepository<FirstEntity, Long> {
}
package cn.juwatech.multidatasourcedemo.repository.second;import cn.juwatech.multidatasourcedemo.model.second.SecondEntity;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;@Repository
public interface SecondEntityRepository extends JpaRepository<SecondEntity, Long> {
}
7. 编写实体类

分别创建每个数据源的实体类,例如:

package cn.juwatech.multidatasourcedemo.model.first;import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;@Entity
public class FirstEntity {@Id@GeneratedValue(strategy = GenerationType.IDENTITY)private Long id;private String name;// 省略Getter和Setter方法
}
package cn.juwatech.multidatasourcedemo.model.second;import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;@Entity
public class SecondEntity {@Id@GeneratedValue(strategy = GenerationType.IDENTITY)private Long id;private String description;// 省略Getter和Setter方法
}
8. 使用多数据源

在Service层或Controller层使用@Qualifier注解指定具体的数据源:

package cn.juwatech.multidatasourcedemo.service;import cn.juwatech.multidatasourcedemo.model.first.FirstEntity;
import cn.juwatech.multidatasourcedemo.model.second.SecondEntity;
import cn.juwatech.multidatasourcedemo.repository.first.FirstEntityRepository;
import cn.juwatech.multidatasourcedemo.repository.second.SecondEntityRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;@Service
public class DataService {@Autowired@Qualifier("firstDataSource")private FirstEntityRepository firstRepository;@Autowired@Qualifier("secondDataSource")private SecondEntityRepository secondRepository;@Transactional(transactionManager = "firstTransactionManager")public void saveDataToFirstDB(FirstEntity entity) {firstRepository.save(entity);}@Transactional(transactionManager = "secondTransactionManager")public void saveDataToSecondDB(SecondEntity entity) {secondRepository.save(entity);}
}
9. 测试和部署

完成以上步骤后,可以启动Spring Boot应用程序,并测试多数据源的读写操作。确保每个数据源配置正确,并能够正常连接和操作数据库。

10. 总结

通过本文,我们详细介绍了如何在Spring Boot应用中配置和使用多数据源。从配置多个数据源的连接信息,到编写对应的Repository和实体类,再到在Service层使用@Qualifier注解指定数据源,我们逐步了解了如何处理复杂应用中的多数据源需求。

http://www.lryc.cn/news/384856.html

相关文章:

  • vue3 【提效】全局布局 vite-plugin-vue-layouts 实用教程
  • 前端性能优化-实测
  • 【Linux】初识操作系统
  • 等保2.0中,如何确保云服务提供商的数据主权合规?
  • 【AI大模型】Transformers大模型库(十四):Datasets Viewer
  • 一个例子理解傅里叶变换的计算过程
  • 2-2到2-4
  • Vatee万腾平台:一站式智慧服务,让生活更美好
  • 如何选择一个好的汽车油封制造商?
  • 构建高效的电商返利系统:架构设计与实现
  • 如何使用 Python 交互式解释器?
  • C++日期类的完整实现,以及this指针的const修饰等的介绍
  • 缓冲区溢出
  • step7:“模拟量界面”逻辑
  • Arduino - 继电器
  • 状态压缩DP——AcWing 327. 玉米田
  • kafka(二)安装部署(2)windows
  • aliplayer Server returned 403 Forbidden (access denied)
  • 单例模式(下)
  • 合约期VS优惠期,搞明白他们的区别才能避免很多坑!
  • 函数式反应式编程(FRP)在Scala中的实践与探索
  • NGINX配置web文件服务
  • deepspeed docker集群实现多机多卡训练----问题记录及解决方案资源汇总
  • 恢复 IntelliJ IDEA 中消失的菜单栏
  • 漏洞利用开发基础学习记录
  • 云通SIPX,您的码号资源智能调度专家!
  • 04-Mysql 索引,事务
  • U盘提示格式化怎么搞定?本文有5种方法(内含教程)
  • day02-登录模块-主页鉴权
  • git rebase的使用