<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Springboot on Java 技术探秘</title>
    <link>https://www.szlinkroutes.com/tags/springboot/</link>
    <description>Recent content in Springboot on Java 技术探秘</description>
    <generator>Hugo</generator>
    <language>zh-CN</language>
    <lastBuildDate>Sat, 01 May 2021 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://www.szlinkroutes.com/tags/springboot/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>springboot 多数据源下，开启事务后，数据源切换失败的处理</title>
      <link>https://www.szlinkroutes.com/categories/%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/springboot-%E5%A4%9A%E6%95%B0%E6%8D%AE%E6%BA%90%E4%B8%8B%E5%BC%80%E5%90%AF%E4%BA%8B%E5%8A%A1%E5%90%8E%E6%95%B0%E6%8D%AE%E6%BA%90%E5%88%87%E6%8D%A2%E5%A4%B1%E8%B4%A5%E7%9A%84%E5%A4%84%E7%90%86/</link>
      <pubDate>Sat, 01 May 2021 00:00:00 +0000</pubDate>
      <guid>https://www.szlinkroutes.com/categories/%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/springboot-%E5%A4%9A%E6%95%B0%E6%8D%AE%E6%BA%90%E4%B8%8B%E5%BC%80%E5%90%AF%E4%BA%8B%E5%8A%A1%E5%90%8E%E6%95%B0%E6%8D%AE%E6%BA%90%E5%88%87%E6%8D%A2%E5%A4%B1%E8%B4%A5%E7%9A%84%E5%A4%84%E7%90%86/</guid>
      <description>springboot 多数据源下，开启事务后，数据源切换失败的处理 1. 问题的产生 在之前的文章中，整合了spring多数据源后，开始进行了愉快地编码中。不过这种&amp;quot;愉快&amp;quot;并没有持续多久，就碰到了一个诡异的问题：数据源切换突然不起作用了。经多次代码比对，发现无法切换的方法上加了个注解：@Transactional.&#xA;2. 验证 首先，对无@Transactional注解的代码进行访问：&#xA;@Override public List&amp;lt;User&amp;gt; selectByQuery(UserQuery query) { //省略其他代码 ... } 访问http://localhost:8084/api/user/get?appId=3，结果如下：&#xA;[ { &amp;#34;uid&amp;#34;: 1, &amp;#34;nick&amp;#34;: &amp;#34;db3_张三&amp;#34; }, { &amp;#34;uid&amp;#34;: 2, &amp;#34;nick&amp;#34;: &amp;#34;db3_李四&amp;#34; }, { &amp;#34;uid&amp;#34;: 3, &amp;#34;nick&amp;#34;: &amp;#34;db3_王五&amp;#34; } ] 可以看到，结果正常。&#xA;接着，添加@Transactional注解，再次访问：&#xA;@Override @Transactional(rollbackFor = Exception.class) public List&amp;lt;User&amp;gt; selectByQuery(UserQuery query) { //省略其他代码 ... } 访问http://localhost:8084/api/user/get?appId=3，结果如下：&#xA;[ { &amp;#34;uid&amp;#34;:1, &amp;#34;nick&amp;#34;:&amp;#34;main_张三&amp;#34; }, { &amp;#34;uid&amp;#34;:2, &amp;#34;nick&amp;#34;:&amp;#34;main_李四&amp;#34; }, { &amp;#34;uid&amp;#34;:3, &amp;#34;nick&amp;#34;:&amp;#34;main_王五&amp;#34; } ] 可以看到，获取到的是main数据源中的数据。&#xA;3. 分析 这里引进csdn上一位博主《springboot+mybatis解决多数据源切换事务控制不生效的问题》的分析：</description>
    </item>
    <item>
      <title>springboot &#43; druid 实现数据源下动态切换</title>
      <link>https://www.szlinkroutes.com/categories/%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/springboot-&#43;-druid-%E5%AE%9E%E7%8E%B0%E6%95%B0%E6%8D%AE%E6%BA%90%E4%B8%8B%E5%8A%A8%E6%80%81%E5%88%87%E6%8D%A2/</link>
      <pubDate>Wed, 03 Jun 2020 00:00:00 +0000</pubDate>
      <guid>https://www.szlinkroutes.com/categories/%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/springboot-&#43;-druid-%E5%AE%9E%E7%8E%B0%E6%95%B0%E6%8D%AE%E6%BA%90%E4%B8%8B%E5%8A%A8%E6%80%81%E5%88%87%E6%8D%A2/</guid>
      <description>springboot + druid 实现数据源下动态切换 1. 项目背景 最近接到一个需求：为多个业务系统开发统一的管理后台，这几个业务系统的相关业务惊人地相似，用的是同一份代码，只是地区、受众不同，因此服务器、数据库都单独分开了。&#xA;项目很明显要用到多数据源，经过在google多方打探，终于了解到基于AbstractRoutingDataSource的多数据源解决方案了。废话不多说，上代码介绍我的实现方式。&#xA;2. 代码实现 2.1 引入多数据源 在 application.yml 引入多数据源配置，这里使用的是阿里的 Druid 连接池：&#xA;# 数据源配置 spring: datasource: type: com.alibaba.druid.pool.DruidDataSource driverClassName: com.mysql.cj.jdbc.Driver druid: # 主库数据源 main: url: jdbc:mysql://127.0.0.1:3306/main?useUnicode=true&amp;amp;characterEncoding=utf8&amp;amp;zeroDateTimeBehavior=convertToNull&amp;amp;useSSL=true&amp;amp;serverTimezone=GMT%2B8 username: root password: 123 # 应用数据源 app: # db1 db1: url: jdbc:mysql://127.0.0.1:3306/db1?useUnicode=true&amp;amp;characterEncoding=utf8&amp;amp;zeroDateTimeBehavior=convertToNull&amp;amp;useSSL=true&amp;amp;serverTimezone=GMT%2B8 username: root password: 123 # db2 db2: url: jdbc:mysql://127.0.0.1:3306/db2?useUnicode=true&amp;amp;characterEncoding=utf8&amp;amp;zeroDateTimeBehavior=convertToNull&amp;amp;useSSL=true&amp;amp;serverTimezone=GMT%2B8 username: root password: 123 # ds3 db3: url: jdbc:mysql://127.0.0.1:3306/db3?useUnicode=true&amp;amp;characterEncoding=utf8&amp;amp;zeroDateTimeBehavior=convertToNull&amp;amp;useSSL=true&amp;amp;serverTimezone=GMT%2B8 username: root password: 123 这里一共引入了4个数据源：main、db1、db2、db3&#xA;main: 管理后台的数据源，存放管理后台相关数据，如用户登录数据、系统菜单等 db1: 业务系统1的数据源 db2: 业务系统2的数据源 db3: 业务系统3的数据源 2.</description>
    </item>
  </channel>
</rss>
