用@Qualifier+JdbcTemplate实现多数据源

本文介绍了如何在SpringBoot应用中使用`application.properties`配置文件管理两个不同数据源(primary和secondary),包括DataSource和JdbcTemplate的配置,以及在Controller中注入和使用这些数据源的方法。

配置文件:application.properties中进行相关配置,我们先配两个不同的数据源

#常用数据库配置
spring.datasource.primary.url=jdbc:mysql://localhost:3306/test01
spring.datasource.primary.username=root
spring.datasource.primary.password=root
spring.datasource.primary.driver-class-name=com.mysql.jdbc.Driver
#非常用数据库的配置
spring.datasource.second.url=jdbc:mysql://localhost:3306/test02
spring.datasource.second.username=root
spring.datasource.second.password=root
spring.datasource.second.driver-class-name=com.mysql.jdbc.Driver

JdbcDataSource 的配置

import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.jdbc.DataSourceBuilder;
import org.springframework.context.annotation.Primary;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.<
该内容为 Java 配置类代码,属于**代码型**问题。 --- ### 代码概述 这是一个使用 `@Configuration` 注解的 Spring 配置类 `JdbcTemplateConfig`,用于定义和注册多个 `JdbcTemplate` 实例,支持操作不同的数据源。 --- ### 代码解析 ```java @Configuration public class JdbcTemplateConfig { @Bean @Primary public JdbcTemplate jdbcTemplate(@Qualifier("datasource") DataSource dataSource) { return new JdbcTemplate(dataSource); } @Bean("pposJdbcTemplate") public JdbcTemplate pposJdbcTemplate(@Qualifier("pposdatasource") DataSource pposDataSource) { return new JdbcTemplate(pposDataSource); } } ``` 1. **`@Configuration`** - 表示此类是 Spring 的配置类,等价于 XML 配置文件。 - Spring 启动时会处理其中的 `@Bean` 方法,将返回对象注册为 Bean。 2. **第一个 Bean:默认 JdbcTemplate** ```java @Bean @Primary public JdbcTemplate jdbcTemplate(@Qualifier("datasource") DataSource dataSource) ``` - 创建一个默认的 `JdbcTemplate`,绑定名为 `"datasource"` 的数据源。 - `@Primary` 表示当有多个 `JdbcTemplate` 时,优先使用这个作为自动注入的候选。 3. **第二个 Bean:命名的 JdbcTemplate** ```java @Bean("pposJdbcTemplate") public JdbcTemplate pposJdbcTemplate(@Qualifier("pposdatasource") DataSource pposDataSource) ``` - 创建另一个 `JdbcTemplate` 实例,使用名为 `"pposdatasource"` 的数据源。 - 通过 `"pposJdbcTemplate"` 指定 Bean 名称,可通过名称精确注入。 4. **用途说明** - 支持多数据源场景(如主库、POS系统库)。 - 可分别对不同数据库执行 SQL 操作。 --- ### 知识点 - **`@Configuration` 与 `@Bean`** 用 Java 类代替 XML 定义 Bean,提升类型安全性与可调试性。 - **`@Primary` 注解** 解决自动装配歧义,指定首选 Bean,避免 `NoUniqueBeanDefinitionException`。 - **多数据源管理** 在微服务或复杂系统中,访问多个数据库需配置独立的数据源与模板实例。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

杨洋阳和羊羊羊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值