栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java基础之《JdbcTemplate多数据源配置和事务管理》

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java基础之《JdbcTemplate多数据源配置和事务管理》

1、DataSourceConfig.java

package cn.xxx.coupon.pay.config;

import javax.sql.DataSource;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;

import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceBuilder;


@Configuration
public class DataSourceConfig {

	@Primary
	@ConfigurationProperties(prefix = "spring.datasource.druid.one")
	@Bean(name = "dsOne")
	public DataSource dsOne() {
		return DruidDataSourceBuilder.create().build();
	}

	@ConfigurationProperties(prefix = "spring.datasource.druid.two")
	@Bean(name = "dsTwo")
	public DataSource dsTwo() {
		return DruidDataSourceBuilder.create().build();
	}
}

2、JdbcTemplateConfig.java

package cn.xxx.coupon.pay.config;

import javax.sql.DataSource;

import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.jdbc.core.JdbcTemplate;

@Configuration
public class JdbcTemplateConfig {

	@Bean
	public JdbcTemplate jdbcTemplateOne(@Qualifier("dsOne") DataSource dataSource) {
		return new JdbcTemplate(dataSource);
	}

	@Bean
	public JdbcTemplate jdbcTemplateTwo(@Qualifier("dsTwo") DataSource dataSource) {
		return new JdbcTemplate(dataSource);
	}
}

3、yml文件配置

#定义两个数据源
spring:
  datasource:
    druid:
      one:
        driverClassName: com.mysql.cj.jdbc.Driver
        type: com.alibaba.druid.pool.DruidDataSource
        url: jdbc:mysql://localhost:3306/db1?serverTimezone=UTC
        username: db1
        password: db1
      two:
        driverClassName: com.mysql.cj.jdbc.Driver
        type: com.alibaba.druid.pool.DruidDataSource
        url: jdbc:mysql://localhost:3306/db2?serverTimezone=UTC
        username: db2
        password: db2

4、pom.xml文件配置


    org.springframework.boot
    spring-boot-starter-jdbc


    org.springframework.boot
    spring-boot-starter-web


    mysql
    mysql-connector-java


    com.alibaba
    druid-spring-boot-starter

5、注意事项
Spring Boot 2.X 版本不再支持配置继承,多数据源的话每个数据源的所有配置都需要单独配置,否则配置不会生效
https://github.com/alibaba/druid/tree/master/druid-spring-boot-starter

6、事务管理
JdbcTemplate单数据源可以用@Transactional管理事务
多数据源@Transactional只对标识@Primary的数据源有效

7、事务管理器默认会绑定
当引入jdbc依赖之后,SpringBoot会自动默认分别注入DataSourceTransactionManager或JpaTransactionManager,所以我们不需要任何额外配置就可以用@Transactional注解进行事务的使用。spring-boot-starter-jdbc会触发DataSourceTransactionManagerAutoConfiguration这个自动化配置类,构造事务管理器

参考资料:https://blog.csdn.net/liu19900205/article/details/84972595

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/749196.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号