当前位置:首页 >> 编程语言 >> 【Spring实战】配置多数据源,华为u8860论坛

【Spring实战】配置多数据源,华为u8860论坛

cpugpu芯片开发光刻机 编程语言 1
文件名:【Spring实战】配置多数据源,华为u8860论坛 【Spring实战】配置多数据源

文章目录 1. 配置数据源信息2. 创建第一个数据源3. 创建第二个数据源4. 创建启动类及查询方法5. 启动服务6. 创建表及做数据7. 查询验证8. 详细代码总结

通过上一节的介绍,我们已经知道了如何使用 Spring 进行数据源的配置以及应用。在一些复杂的应用中,可能需要访问多个数据库,每个数据库可能负责不同的业务功能或数据存储。 那么,如果我们程序中需要两个或者两个以上数据源该怎么办呢? 本文将介绍如何使用 Spring 实现多数据源的配置和使用。

1. 配置数据源信息

在创建数据源之前,我们先预先定义好两个数据源的信息,注意前缀要区分开。

spring.h2.console.enabled=truespring.h2.console.path=/h2-console# 创建第一个数据源信息spring.datasource.jdbc-url=jdbc:h2:mem:db1spring.datasource.driverClassName=org.h2.Driverspring.datasource.username=saspring.datasource.password=# 创建第二个数据源信息spring.datasource2.jdbc-url=jdbc:h2:mem:db2spring.datasource2.driverClassName=org.h2.Driverspring.datasource2.username=saspring.datasource2.password= 2. 创建第一个数据源

创建第一个 Datasource1Config.java 文件,然后使用 @Configuration 注解声明这是一个配置类。再使用 @Bean 配合 @ConfigurationProperties 来获取数据源的信息用来创建 dataSource 和 jdbcTemplate 以备后面查询使用。

package com.cheney.demo.config;import org.springframework.boot.context.properties.ConfigurationProperties;import org.springframework.boot.jdbc.DataSourceBuilder;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.jdbc.core.JdbcTemplate;import javax.sql.DataSource;@Configurationpublic class Datasource1Config {@Bean@ConfigurationProperties("spring.datasource")public DataSource dataSource(){return DataSourceBuilder.create().build();}@Beanpublic JdbcTemplate jdbcTemplate(DataSource dataSource){return new JdbcTemplate(dataSource);}} 3. 创建第二个数据源

创建第一个 Datasource2Config.java 文件,然后使用 @Configuration 注解声明这是一个配置类。再使用 @Bean 配合 @ConfigurationProperties 来获取数据源的信息用来创建 dataSource2 和 jdbcTemplate2 以备后面查询使用。

package com.cheney.demo.config;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.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.jdbc.core.JdbcTemplate;import javax.sql.DataSource;@Configurationpublic class Datasource2Config {@Bean@ConfigurationProperties("spring.datasource2")public DataSource dataSource2(){return DataSourceBuilder.create().build();}@Beanpublic JdbcTemplate jdbcTemplate2(@Qualifier("dataSource2") DataSource dataSource){return new JdbcTemplate(dataSource);}} 4. 创建启动类及查询方法

创建了一个正常的 Spring 启动类,分别注入了两套 JdbcTemplate 和 对外访问接口。

package com.cheney.demo;import lombok.extern.slf4j.Slf4j;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.jdbc.core.JdbcTemplate;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;import java.sql.SQLException;@SpringBootApplication@RestController@Slf4jpublic class DemoApplication {public static void main(String[] args) {SpringApplication.run(DemoApplication.class, args);}@Autowiredprivate JdbcTemplate jdbcTemplate;@Autowiredprivate JdbcTemplate jdbcTemplate2;@RequestMapping("db1")public String getUserFromDataSource1() throws SQLException {return jdbcTemplate.queryForList("select * from t_user").toString();}@RequestMapping("db2")public String getUserFromDataSource2(){return jdbcTemplate2.queryForList("select * from t_user").toString();}} 5. 启动服务

通过控制台,我们可以看到启动了两个数据库连接分别是 conn0 和 conn1 并且都打印出了 RUL 等信息

6. 创建表及做数据

1)使用 h2 数据库控制台连接 db1 ,创建表并登陆数据

访问下面 URL

http://localhost:8080/h2-console

使用 application.properties 里定义的第一个数据源的 URL 进行连接

点击 Connect 按钮,进入控制台。输入 建表语句并插入一条数据

CREATE TABLE IF NOT EXISTS `t_user` (`id` INTEGER PRIMARY KEY AUTO_INCREMENT,`name` VARCHAR(32) NOT NULL,`age` INTEGER NOT NULL);INSERT INTO `t_user` (`id`, `name`, `age`) VALUES (1, 'cheney', '11');

点击 Run(绿色三角图标)

这就完成了对数据源1的建表和做数据(注意此条数据 age 是 11)

1)使用 h2 数据库控制台连接 db2 ,创建表并登陆数据

连接方法一致,此时执行 sql

CREATE TABLE IF NOT EXISTS `t_user` (`id` INTEGER PRIMARY KEY AUTO_INCREMENT,`name` VARCHAR(32) NOT NULL,`age` INTEGER NOT NULL);INSERT INTO `t_user` (`id`, `name`, `age`) VALUES (1, 'cheney', '22');

点击 Connect 按钮,进入控制台。输入 建表语句并插入一条数据,点击 Run(绿色三角图标)

这就完成了对数据源1的建表和做数据(注意此条数据 age 是 22)

7. 查询验证

使用浏览器,先访问第一个数据源,使用如下 URL

http://localhost:8080/db1

和我们之前插入数据库的值一样, age 是 11

使用浏览器,先访问第二个数据源,使用如下 URL

http://localhost:8080/db2

和我们之前插入数据库的值一样, age 是 22

这样就可以分开使用数据库了,此处我们使用了两个数据源都是 h2 数据库,你也可以使用两个不一样的数据库。此处仅做了查询,你也可以做 insert 或者 update 等等。

8. 详细代码

https://github.com/cheney09/spring-practical-combat/tree/main/02/demo

总结

本文将介绍如何使用 Spring 实现多数据源,通过一个简单的 Spring 多数据源的配置和使用示例。实际项目中,你可能需要根据具体需求进行更复杂的配置和逻辑。希望这个示例能够帮助你理解如何在 Spring 应用程序中使用多个数据源。

协助本站SEO优化一下,谢谢!
关键词不能为空
同类推荐
«    2025年12月    »
1234567
891011121314
15161718192021
22232425262728
293031
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
搜索
最新留言
文章归档
网站收藏
友情链接