Spring Boot 配置多数据源
2022/11/30 23:54:01
本文主要是介绍Spring Boot 配置多数据源,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
代码说明
首先,配置两个数据源,这里我们基于 H2 配置了两个简单数据源,由于 H2 是内存数据库,无需手动新建
foo.datasource.url=jdbc:h2:mem:foo foo.datasource.username=sa foo.datasource.password= foo.datasource.driver-class-name=org.h2.Driver bar.datasource.url=jdbc:h2:mem:bar bar.datasource.username=sa bar.datasource.password= bar.datasource.driver-class-name=org.h2.Driver
接下来在 resources 新建一个 db 文件夹,里面存两个数据库的初始化脚本
schema.sql
DROP TABLE IF EXISTS USER_INFO; CREATE TABLE USER_INFO ( id INT AUTO_INCREMENT PRIMARY KEY, user_name VARCHAR(250) NOT NULL, email VARCHAR(250) DEFAULT NULL );
foo 数据源的初始化数据 foo-data.sql
INSERT INTO USER_INFO (user_name, email) VALUES ('grey-foo', 'abc@gmail.com'), ('jack-foo', 'jack@email.com');
bar 数据源的初始化数据 bar-data.sql
INSERT INTO USER_INFO (user_name, email) VALUES ('grey-bar', 'abc@gmail.com'), ('jack-bar', 'jack@email.com');
脚本和数据源配置好以后,接下来要准备两个数据源的配置类信息,以任意一个数据源的配置类信息为例(另外一个同理)
foo 数据源的配置信息如下
@Configuration @ConfigurationProperties(prefix = "foo.datasource") @Slf4j public class FooDataSourceConfig { @Bean public PlatformTransactionManager fooTxManager(DataSource fooDataSource) { return new DataSourceTransactionManager(fooDataSource); } @Bean public DataSourceProperties fooDataSourceProperties() { return new DataSourceProperties(); } @Bean @Primary public DataSource fooDataSource() { DataSourceProperties dataSourceProperties = fooDataSourceProperties(); // schema init DatabasePopulator databasePopulator = new ResourceDatabasePopulator( new ClassPathResource("db/schema.sql"), new ClassPathResource("db/foo-data.sql")); DataSource ds = dataSourceProperties.initializeDataSourceBuilder().build(); DatabasePopulatorUtils.execute(databasePopulator, ds); log.info("foo datasource: {}", dataSourceProperties.getUrl()); return ds; } @Bean @Primary public JdbcTemplate fooJdbcTemplate(@Qualifier("fooDataSource") DataSource dataSource) { return new JdbcTemplate(dataSource); } }
需要注意的点,@Primary
参数定义了该数据源是主数据源,也就是说,调用数据源的时候,如果没有指定名称默认就是用这个数据源。
在fooDataSource
中,定义了初始化脚本的位置
DatabasePopulator databasePopulator = new ResourceDatabasePopulator( new ClassPathResource("db/schema.sql"), new ClassPathResource("db/foo-data.sql"));
标签:Spring,Boot,多数据源,数据,数据源, 来源:
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。
这篇关于Spring Boot 配置多数据源的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-04-17基于SpringWeb MultipartFile文件上传、下载功能
- 2024-04-14个人开发者,Spring Boot 项目如何部署
- 2024-04-14RAG应用开发实战02-相似性检索的关键 - Embedding
- 2024-04-14出海软件草根逆袭打法是什么?
- 2024-04-13鸿蒙原生应用再新丁!企查查 碧蓝航线 入局鸿蒙
- 2024-04-11RAG应用开发实战(01)-RAG应用框架和解析器
- 2024-04-10DevOps已死?2024年的DevOps将如何发展
- 2024-04-10码农必看:常见源代码混淆技术详解
- 2024-04-07以一当十丨TiDB 在东吴证券秀财 APP 的应用实践
- 2024-04-07月活超 1.1 亿,用户超 4 亿,你也在用的「知乎」是如何在超大规模 TiDB 集群上玩转多云多活的?来听听知乎代晓磊的答案!