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-05-20测试人员都是画画大神,让我看看谁还不会用代码图?
- 2024-05-20年薪百万的程序员都在用的摸鱼方式……
- 2024-05-19永别了,微服务架构!
- 2024-05-15鸿蒙生态设备数量超8亿台
- 2024-05-13TiDB + ES:转转业财系统亿级数据存储优化实践
- 2024-05-09“2024鸿蒙零基础快速实战-仿抖音App开发(ArkTS版)”实战课程已上线
- 2024-05-09聊聊如何通过arthas-tunnel-server来远程管理所有需要arthas监控的应用
- 2024-05-09log4j2这么配就对了
- 2024-05-09nginx修改Content-Type
- 2024-05-09Redis多数据源,看这篇就够了