Spring Boot 配置双数据源
- 目录
- 概述
- 需求:
- 设计思路
- 实现思路分析
- 1.基本步骤
- 2.实例
- 参考资料和推荐阅读
Survive by day and develop by night.
talk for import biz , show your perfect code,full busy,skip hardness,make a better result,wait for change,challenge Survive.
happy for hardess to solve denpendies.
目录
概述
需求:
设计思路
实现思路分析
1.基本步骤
-
- 添加依赖
- 添加 Spring Boot 和数据库驱动的依赖
-
- 配置数据源
- 在 application.properties 或 application.yml 中分别配置两个数据源的连接信息
-
- 创建数据源配置类
- 创建两个数据源的配置类,分别配置数据源相关信息
-
- 配置数据源事务管理器
- 创建两个数据源的事务管理器,并指定数据源
-
- 配置 JPA 实体管理器工厂
- 创建两个 JPA 实体管理器工厂,并指定数据源和配置信息
-
- 配置事务注解支持
- 启用事务注解支持,并指定事务管理器
-
- 在 DAO 层使用数据源
- 使用 @Qualifier 注解指定使用的数据源
-
- 测试双数据源配置
- 编写测试代码,分别使用两个数据源进行数据库操作
2.实例
在Spring Boot中配置双数据源可以使用多个方法,下面介绍其中的一种方法。
- 引入相关依赖
首先在pom.xml
文件中引入Spring Boot和数据库连接池的依赖。例如,使用MySQL和H2数据库,可以添加以下依赖:
<dependencies><!-- Spring Boot --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- MySQL --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency><!-- H2 --><dependency><groupId>com.h2database</groupId><artifactId>h2</artifactId><scope>runtime</scope></dependency>
</dependencies>
- 配置数据源
在application.properties
文件中配置两个数据源的属性,例如:
# MySQL 数据源配置
spring.datasource.mysql.url=jdbc:mysql://localhost:3306/db1
spring.datasource.mysql.username=root
spring.datasource.mysql.password=123456
spring.datasource.mysql.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.mysql.tomcat.max-wait=10000# H2 数据源配置
spring.datasource.h2.url=jdbc:h2:mem:db2
spring.datasource.h2.username=sa
spring.datasource.h2.password=
spring.datasource.h2.driver-class-name=org.h2.Driver
spring.datasource.h2.tomcat.max-wait=10000
- 配置数据源对象
创建两个数据源对象,用于连接数据库。可以使用@Configuration
注解和@Bean
注解来实现。例如:
@Configuration
public class DataSourceConfig {@Bean(name = "mysqlDataSource")@ConfigurationProperties(prefix = "spring.datasource.mysql")public DataSource mysqlDataSource() {return DataSourceBuilder.create().build();}@Bean(name = "h2DataSource")@ConfigurationProperties(prefix = "spring.datasource.h2")public DataSource h2DataSource() {return DataSourceBuilder.create().build();}
}
- 配置JdbcTemplate对象
创建两个JdbcTemplate对象,用于执行SQL语句。可以使用@Autowired
注解来实现。例如:
@Configuration
public class JdbcTemplateConfig {@Autowired@Qualifier("mysqlDataSource")private DataSource mysqlDataSource;@Autowired@Qualifier("h2DataSource")private DataSource h2DataSource;@Bean(name = "mysqlJdbcTemplate")public JdbcTemplate mysqlJdbcTemplate() {return new JdbcTemplate(mysqlDataSource);}@Bean(name = "h2JdbcTemplate")public JdbcTemplate h2JdbcTemplate() {return new JdbcTemplate(h2DataSource);}
}
- 使用JdbcTemplate对象
在代码中使用JdbcTemplate对象来执行SQL语句。可以使用@Autowired
注解来实现。例如:
@RestController
public class UserController {@Autowired@Qualifier("mysqlJdbcTemplate")private JdbcTemplate mysqlJdbcTemplate;@Autowired@Qualifier("h2JdbcTemplate")private JdbcTemplate h2JdbcTemplate;@GetMapping("/users")public List<User> getUsers() {List<User> users = new ArrayList<>();// 使用mysqlJdbcTemplate执行SQL语句mysqlJdbcTemplate.query("SELECT * FROM users", (rs, rowNum) -> {User user = new User();user.setId(rs.getInt("id"));user.setName(rs.getString("name"));users.add(user);return null;});// 使用h2JdbcTemplate执行SQL语句h2JdbcTemplate.query("SELECT * FROM users", (rs, rowNum) -> {User user = new User();user.setId(rs.getInt("id"));user.setName(rs.getString("name"));users.add(user);return null;});return users;}
}
以上就是在Spring Boot中配置双数据源的基本步骤。配置完成后,就可以使用两个数据源执行不同的SQL语句了。
参考资料和推荐阅读
参考资料
官方文档
开源社区
博客文章
书籍推荐
- https://blog.csdn.net/Stranger_Orz/article/details/122081492
- https://blog.csdn.net/qq_42666609/article/details/130221136
- https://blog.csdn.net/kk12927/article/details/106222483/
欢迎阅读,各位老铁,如果对你有帮助,点个赞加个关注呗!同时,期望各位大佬的批评指正~,如果有兴趣,可以加文末的交流群,大家一起进步哈