赵走x博客
网站访问量:151449
首页
书籍
软件
工具
古诗词
搜索
登录
32、使用MyBatis注解实现数据库操作
31、MyBaties使用XML配置文件实现数据库操作
30、Spring Boot构建MyBatis应用程序
29、MyBatis简介
28、实战:实现JdbcTemplate多数据源
27、使用JdbcTemplate操作数据库
26、JdbcTemplate入门
25、实战:实现Web API版本控制
24、使用Swagger生成Web API文档
23、Thymeleaf页面布局
22、Thymeleaf内置对象、内嵌变量
21、Thymeleaf内联
20、Thymeleaf语法
19、Thymeleaf表达式
18、Thymeleaf入门
17、全局异常处理
16、实战:实现优雅的数据返回
15、跳转指定页面
14、Spring Boot静态资源
13、Spring Boot数据转换配置
12、跨域访问
11、Web配置
10、过滤器
9、拦截器
8、数据验证
7、参数传递
6、URL映射
5、@ResponseBody
4、@RequestMapping
3、@Controller和@RestController
2、Web项目结构
1、spring-boot-starter-web介绍
28、实战:实现JdbcTemplate多数据源
资源编号:551859
热度:122
28、实战:实现JdbcTemplate多数据源
上一节使用JdbcTemplate成功地实现了用户信息的增删改查功能,接下来好好研究一下如何配置多数据源。 # 一、什么是多数据源 所谓多数据源,其实就是在一个项目中使用多个数据库实例中的数据库或者同一个数据库实例中多个不同的库。 在实际开发中可能会遇到需要配置多个数据源的情况,比如项目需要使用业务数据库和日志数据库等多个数据库,或者需要使用多种数据库(如MySQL、Oracle、SQL Server等)。 JdbcTemplate多数据源的配置比较简单,因为一个JdbcTemplate实例对应一个DataSource,开发者只需要手动提供多个DataSource,再手动配置相应的JdbcTemplate实例,需要操作哪个数据源就使用对应的JdbcTemplate实例即可。 # 二、配置JdbcTemplate多数据源 接下来在前面项目的基础上进行改造,演示JdbcTemplate是如何配置多数据源的。 ### 步骤01 配置多数据源。 修改application.properties文件,配置数据源连接,示例代码如下: ``` spring.datasource.primary.jdbc-url=jdbc:mysql://localhost:3306/jdbc_test spring.datasource.primary.username=root spring.datasource.primary.password=root spring.datasource.primary.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.secondary.jdbc-url=jdbc:mysql://localhost:3306/jdbc_test2 spring.datasource.secondary.username=root spring.datasource.secondary.password=root spring.datasource.secondary.driver-class-name=com.mysql.cj.jdbc.Driver ``` 在上面的示例中,先重新创建jdbc_test2数据库,再通过jdbc_test和jdbc_test2两个数据库演示多数据库的情况。 我们可以看到上面的配置和原先单数据源的配置有些不同: - 1)在application.properties配置文件中添加了两个数据源,通过primary和secondary来区分,分别对应的是jdbc_test和jdbc_test2数据库。 - 2)单数据源的数据库连接使用spring.datasource.url配置项,多数据源使用spring.datasource.*.jdbc-url配置项。 ###步骤02 配置JDBC初始化。 创建DataSourceConfig类,在项目启动时读取配置文件中的数据库信息,并对JDBC初始化,具体代码如下: ``` @Configuration public class DataSourceConfig { @Primary @Bean(name = "primaryDataSource") @Qualifier("primaryDataSource") @ConfigurationProperties(prefix="spring.datasource.primary") public DataSource primaryDataSource() { return DataSourceBuilder.create().build(); } @Bean(name = "secondaryDataSource") @Qualifier("secondaryDataSource") @ConfigurationProperties(prefix="spring.datasource.secondary") public DataSource secondaryDataSource() { return DataSourceBuilder.create().build(); } @Bean(name="primaryJdbcTemplate") public JdbcTemplate primaryJdbcTemplate ( @Qualifier("primaryDataSource") DataSource dataSource ) { return new JdbcTemplate(dataSource); } @Bean(name="secondaryJdbcTemplate") public JdbcTemplate secondaryJdbcTemplate( @Qualifier("secondaryDataSource") DataSource dataSource) { return new JdbcTemplate(dataSource); } } ``` 在上面的示例中,DataSourceConfig类的作用是在项目启动时根据特定的前缀加载不同的数据源,再根据构建好的数据源创建不同的JdbcTemplate。 由于Spring容器中存在两个数据源,使用默认的类型查找时会报错,因此加上@Qualifier注解,表示按照名称查找。 这里创建了两个JdbcTemplate实例,分别对应了两个数据源。需要注意的是,使用多个数据源时需要添加@Primary注解,表示自动装配出现多个Bean候选者时,被注解为@Primary的Bean将作为首选者。 Primary表示“主要的”,类似于SQL语句中的“Primary Key”(主键),只能有唯一一个,否则会报错。 ### 步骤03 使用多数据源。 配置完成之后如何使用呢? 下面通过单元测试实例来演示使用多数据源。在测试列中注入了两个不同数据源的JdbcTemplate实例,测试使用不同的JdbcTemplate插入两条数据,查看两个数据库中是否全部保存成功。示例代码如下: ``` @ @Autowired private JdbcTemplate primaryJdbcTemplate; @Autowired private JdbcTemplate secondaryJdbcTemplate; @Test public void dataSourceTest(){ Student student = new Student("weiz多数据源",0,30); primaryJdbcTemplate.update("INSERT INTO Student(name, sex, age) values(?, ?, ?)", student.getName(), student.getSex(), student.getAge()); secondaryJdbcTemplate.update("INSERT INTO Student(name, sex, age) values(?, ?, ?)", student.getName(), student.getSex(), student.getAge()); } ``` 单击Run Test或在方法上右击,选择Run 'save2',运行测试方法,结果如图7-4所示。  执行dataSourceTest()单元测试之后,我们看到系统自动创建了HikariPool-1和HikariPool-2两个数据库连接,查看数据库jdbc_test和jdbc_test2中的student表中是否有名为“weiz多数据源”的数据,有则说明多数据源配置成功。 其他方法的测试与此大致相同。这样多数据源就配置成功了。 在实际开发的项目中,可以通过实现多数据源配置业务数据库与日志数据库分离。