文章目录
- 背景
- 示例代码(结合实际进行配置)
- 总结
背景
当使用Spring Boot项目并需要多数据源时,你可以使用Druid连接池来配置和管理多个数据源。以下是一个示例的配置和代码,以说明如何实现多数据源:
示例代码(结合实际进行配置)
-
首先,确保在pom.xml文件中添加Druid依赖:
<dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>1.2.6</version></dependency>
-
创建两个数据源配置类,分别对应两个数据源(假设为dataSource1和dataSource2):
@Configurationpublic class DataSource1Config {@Bean@ConfigurationProperties("spring.datasource.druid.datasource1")public DataSource dataSource1() {return DruidDataSourceBuilder.create().build();}}
@Configurationpublic class DataSource2Config {@Bean@ConfigurationProperties("spring.datasource.druid.datasource2")public DataSource dataSource2() {return DruidDataSourceBuilder.create().build();}}
在上述代码中,使用@ConfigurationProperties注解将Druid配置属性绑定到数据源对象,并创建Druid数据源实例。
-
在application.properties或application.yml文件中配置数据源相关属性:
- application.properties示例:
spring.datasource.druid.datasource1.url=jdbc:mysql://localhost:3306/db1spring.datasource.druid.datasource1.username=username1spring.datasource.druid.datasource1.password=password1spring.datasource.druid.datasource1.driver-class-name=com.mysql.jdbc.Driverspring.datasource.druid.datasource2.url=jdbc:mysql://localhost:3306/db2spring.datasource.druid.datasource2.username=username2spring.datasource.druid.datasource2.password=password2spring.datasource.druid.datasource2.driver-class-name=com.mysql.jdbc.Driver
- application.yml示例:
spring:datasource:druid:datasource1:url: jdbc:mysql://localhost:3306/db1username: username1password: password1driver-class-name: com.mysql.jdbc.Driverdatasource2:url: jdbc:mysql://localhost:3306/db2username: username2password: password2driver-class-name: com.mysql.jdbc.Driver
在上述配置中,你可以根据实际情况修改URL、用户名和密码等数据源配置属性。
-
创建两个数据源的JdbcTemplate对象:
@Configurationpublic class JdbcTemplateConfig {@Beanpublic JdbcTemplate jdbcTemplate1(@Qualifier("dataSource1") DataSource dataSource1) {return new JdbcTemplate(dataSource1);}@Beanpublic JdbcTemplate jdbcTemplate2(@Qualifier("dataSource2") DataSource dataSource2) {return new JdbcTemplate(dataSource2);}}
在上述代码中,使用@Qualifier注解指定要注入的数据源对象。
-
在需要使用数据源的地方,注入相应的JdbcTemplate并使用:
@Servicepublic class UserService {private final JdbcTemplate jdbcTemplate1;private final JdbcTemplate jdbcTemplate2;public UserService(@Qualifier("jdbcTemplate1") JdbcTemplate jdbcTemplate1,@Qualifier("jdbcTemplate2") JdbcTemplate jdbcTemplate2) {this.jdbcTemplate1 = jdbcTemplate1;this.jdbcTemplate2 = jdbcTemplate2;}public void getUserData() {String sql1 = "SELECT * FROM user1";List<Map<String, Object>> users1 = jdbcTemplate1.queryForList(sql1);String sql2 = "SELECT * FROM user2";List<Map<String, Object>> users2 = jdbcTemplate2.queryForList(sql2);// 处理数据...}}
在上述代码中,通过构造函数注入两个JdbcTemplate对象,并使用它们执行相应的SQL查询操作。
总结
通过以上配置和代码,你可以在Spring Boot项目中实现多数据源的使用。每个数据源都有单独的Druid配置,并通过JdbcTemplate对象进行数据库操作。
如果大家遇到类似问题,欢迎评论区讨论,如有错误之处,敬请留言。