Java--SpringBoot-23-多数据源配置及使用

简介: 今天看下SpringBoot配置多个数据源并使用JdbcTemplate来操作数据库

今天看下SpringBoot配置多个数据源并使用JdbcTemplate来操作数据库,我们直接看操作步骤:

一、第一步肯定是先去启动类去除自动注入的配置:

  • DataSourceAutoConfiguration
  • DataSourceTransactionManagerAutoConfiguration
  • JdbcTemplateAutoConfiguration
@SpringBootApplication(exclude= { DataSourceAutoConfiguration.class,
DataSourceTransactionManagerAutoConfiguration.class,
JdbcTemplateAutoConfiguration.class})


二、配置属性

       在application.properties配置文件中要配置好多个数据源,给它们分别起不同的前缀:

####################多数据源配置######################数据源axh.datasource.url=jdbc:mysql://127.0.0.1:3306/xinghua?useSSL=false&characterEncoding=utf-8&allowPublicKeyRetrieval=truexh.datasource.username=rootxh.datasource.password=root#数据源bcjk.datasource.url=jdbc:mysql://127.0.0.1:3306/cangjingkong?useSSL=false&characterEncoding=utf-8&allowPublicKeyRetrieval=truecjk.datasource.username=rootcjk.datasource.password=root


三、手动配置数据源

       我们要建立一个@Configuration修饰的类来分别配置多个数据源,注意必须要用@Primary将其中一个数据源配置成主数据源:

packagecom.xing.studyboot.database.config;
importjavax.annotation.Resource;
importjavax.sql.DataSource;
importorg.springframework.boot.autoconfigure.jdbc.DataSourceProperties;
importorg.springframework.boot.context.properties.ConfigurationProperties;
importorg.springframework.context.annotation.Bean;
importorg.springframework.context.annotation.Configuration;
importorg.springframework.context.annotation.Primary;
importorg.springframework.jdbc.datasource.DataSourceTransactionManager;
importorg.springframework.transaction.PlatformTransactionManager;
@ConfigurationpublicclassDataSourceOtherConfig {
/*** 1.通过以xh.datasource开头的属性配置来创建一个DataSourceProperties* @return*/@Bean@ConfigurationProperties("xh.datasource")
publicDataSourcePropertiesaDataSourceProperties() {
returnnewDataSourceProperties();
  }
/*** 2.用上面的DataSourceProperties构建一个数据源,@Primary生命成这个为主数据源* @return*/@Bean(name="xhDS")
@PrimarypublicDataSourceaDataSource() {
DataSourcePropertiesdataSourceProperties=aDataSourceProperties();
System.out.println("数据源xh datasource: {}"+dataSourceProperties.getUrl());
returndataSourceProperties.initializeDataSourceBuilder().build();
  }
/*** 实例化一个事务* @param dataSource* @return*/@Bean@ResourcepublicPlatformTransactionManagerxhTxManager(DataSourcedataSource) {
returnnewDataSourceTransactionManager(dataSource);
  }
@Bean@ConfigurationProperties("cjk.datasource")
publicDataSourcePropertiesbDataSourceProperties() {
returnnewDataSourceProperties();
  }
@Bean(name="cjkDS")
publicDataSourcebDataSource() {
DataSourcePropertiesdataSourceProperties=bDataSourceProperties();
System.out.println("数据源cjk datasource: {}"+dataSourceProperties.getUrl());
returndataSourceProperties.initializeDataSourceBuilder().build();
  }
@Bean@ResourcepublicPlatformTransactionManagercjkTxManager(DataSourcedataSource) {
returnnewDataSourceTransactionManager(dataSource);
  }
}


四、配置多个JDBCTemplate:

packagecom.xing.studyboot.database.config;
importjavax.sql.DataSource;
importorg.springframework.beans.factory.annotation.Qualifier;
importorg.springframework.context.annotation.Bean;
importorg.springframework.context.annotation.Configuration;
importorg.springframework.jdbc.core.JdbcTemplate;
@ConfigurationpublicclassMyJdbcTemplate {
@Bean(name="xhJdbcTemplate")
publicJdbcTemplatexhJdbcTemplate(@Qualifier("xhDS") DataSourcedataSource) {
returnnewJdbcTemplate(dataSource);
  }
@Bean(name="cjkJdbcTemplate")
publicJdbcTemplatecjkJdbcTemplate(@Qualifier("cjkDS") DataSourcedataSource) {
returnnewJdbcTemplate(dataSource);
  }
}



五、在Controller中分别引入并使用:

@Autowired@Qualifier(value="xhJdbcTemplate")
privateJdbcTemplatexhJdbcTemplate;
@Autowired@Qualifier(value="cjkJdbcTemplate")
privateJdbcTemplatecjkJdbcTemplate;
/*** 保存数据* @return*/@RequestMapping("/jdbc")
publicStringjdbcSome() {
xhJdbcTemplate.update("insert into data_info(id,name,age) values(?, ?, ?)", 101, "x", 18);
cjkJdbcTemplate.update("insert into data_info(id,name,age) values(?, ?, ?)", 100, "x", 18);
return"ok";
  }

六、访问后看看结果

http://127.0.0.1:8888/studySpringBoot/h2/jdbc

image.png


看看xh库:

image.png



       奥里给!完美!


总结:

       多数据源的配置及使用


END

目录
相关文章
|
3天前
|
Java 程序员 Windows
【Java知识点详解 10】为何要配置环境变量,35岁老年程序员的绝地翻身之路
【Java知识点详解 10】为何要配置环境变量,35岁老年程序员的绝地翻身之路
|
4天前
|
安全 Java 开发者
深入理解Spring Boot配置绑定及其实战应用
【4月更文挑战第10天】本文详细探讨了Spring Boot中配置绑定的核心概念,并结合实战示例,展示了如何在项目中有效地使用这些技术来管理和绑定配置属性。
15 1
|
4天前
|
Java 关系型数据库 数据库
Spring Boot多数据源及事务管理:概念与实战
【4月更文挑战第29天】在复杂的企业级应用中,经常需要访问和管理多个数据源。Spring Boot通过灵活的配置和强大的框架支持,可以轻松实现多数据源的整合及事务管理。本篇博客将探讨如何在Spring Boot中配置多数据源,并详细介绍事务管理的策略和实践。
40 3
|
4天前
|
Java
Java配置环境
Java配置环境
22 0
Java配置环境
|
4天前
|
Oracle 关系型数据库 Java
java操作多数据源将oracle数据同步达梦数据库
java操作多数据源将oracle数据同步达梦数据库
|
4天前
|
IDE Java 应用服务中间件
JDK1.6.0+Tomcat6.0的安装配置(配置JAVA环境)
JDK1.6.0+Tomcat6.0的安装配置(配置JAVA环境)
18 1
|
4天前
|
Java 文件存储 Spring
【springboot】logback配置
【springboot】logback配置
21 1
|
4天前
|
Oracle Java 关系型数据库
windows 下 win11 JDK17安装与环境变量的配置(配置简单详细,包含IJ中java文件如何使用命令运行)
本文介绍了Windows 11中安装JDK 17的步骤,包括从官方网站下载JDK、配置环境变量以及验证安装是否成功。首先,下载JDK 17的安装文件,如果没有Oracle账户,可以直接解压缩文件到指定目录。接着,配置系统环境变量,新建`JAVA_HOME`变量指向JDK安装路径,并在`Path`变量中添加。然后,通过命令行(cmd)验证安装,分别输入`java -version`和`javac -version`检查版本信息。最后,作者分享了如何在任意位置运行Java代码,包括在IntelliJ IDEA(IJ)中创建的Java文件,只需去掉包声明,就可以通过命令行直接运行。
|
4天前
|
Java 微服务 Spring
Spring Boot中获取配置参数的几种方法
Spring Boot中获取配置参数的几种方法
22 2
|
4天前
|
消息中间件 安全 Java
在Spring Bean中,如何通过Java配置类定义Bean?
【4月更文挑战第30天】在Spring Bean中,如何通过Java配置类定义Bean?
21 1