李光明从程序员到架构师的逆袭之路(十)

来上海的第十一天,天空依旧阴沉,细雨绵绵。上海的梅雨季总是这样令人烦恼,仿佛要将整个城市都浸泡在潮湿中。雨滴打在窗户上,发出细微的声响,仿佛在嘲笑我这个外来者的无奈。每次出行,我总是得小心翼翼地避开湿滑的路面,以免一个不小心就摔倒在地。衣物、鞋子总是湿漉漉的,让人倍感不适。

我来上海已经有一段时间了,对于找工作这件事,我始终感到迷茫。自从踏上这片繁华的土地,我就开始不断地投递简历,希望能在这里找到一份满意的工作。然而,至今我已经投出了300份简历,却仍然没有得到任何回应。每次查看邮箱,都是空荡荡的,那种失落感让我倍感沮丧。

今天早上,我起得比平时早一些,决定到外面走走,透透气。尽管下着雨,我还是决定出去走走,感受一下这座城市的脉搏。然而,当我走在熙熙攘攘的街道上,我却感到一种莫名的压抑。这里的人太多了,每个人都在为了生活而奔波忙碌,仿佛没有一丝空闲。我环顾四周,到处都是高楼大厦,灯火辉煌,但在这繁华的背后,我却感到一种孤独和寂寞。

尽管没有面试、没有电话,但我并没有放弃学习。我知道,在这个竞争激烈的行业中,只有不断提升自己的技能,才能有更多的机会。昨晚,我花了几个小时学习“SpringBoot通过Druid+JdbcTemplate实现动态数据源”的相关知识。虽然这个过程很枯燥,但我却觉得非常充实。每当掌握了一个新的知识点,我都会感到一种成就感,仿佛离自己的目标又近了一步。

在Spring Boot中,通过Druid和JdbcTemplate实现动态数据源通常涉及几个关键步骤:

  1. 引入必要的依赖项(Druid, JdbcTemplate, Spring Boot相关依赖)。
  2. 配置数据源(主数据源和可能的其他数据源)。
  3. 实现动态数据源路由逻辑。
  4. 配置JdbcTemplate或JdbcTemplate的Bean,以便它们可以使用动态数据源。

首先,添加Maven依赖项(在pom.xml中):

<!-- Spring Boot Starter -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<!-- Druid 数据源 -->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid-spring-boot-starter</artifactId>
    <version>你的Druid版本号</version>
</dependency>
<!-- 数据库连接池依赖(例如:MySQL) -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <scope>runtime</scope>
</dependency>

接下来,定义数据源配置(在application.ymlapplication.properties中):

spring:
  datasource:
    dynamic:
      primary: master # 设置默认的数据源ID
      datasource:
        master:
          url: jdbc:mysql://localhost:3306/master_db?useSSL=false&serverTimezone=UTC
          username: root
          password: password
          driver-class-name: com.mysql.cj.jdbc.Driver
          type: com.alibaba.druid.pool.DruidDataSource
        slave:
          url: jdbc:mysql://localhost:3306/slave_db?useSSL=false&serverTimezone=UTC
          username: root
          password: password
          driver-class-name: com.mysql.cj.jdbc.Driver
          type: com.alibaba.druid.pool.DruidDataSource

# Druid的其他配置(可选)
druid:
  # ...

然后,实现动态数据源路由逻辑。这通常涉及扩展AbstractRoutingDataSource类,并实现determineCurrentLookupKey()方法以返回当前线程的数据源键。

public class DynamicDataSource extends AbstractRoutingDataSource {

    @Override
    protected Object determineCurrentLookupKey() {
        // 这里可以根据线程局部变量、请求参数等获取数据源键
        return DataSourceContextHolder.getDataSource();
    }
}

// 假设我们有一个Holder类来管理当前线程的数据源
public class DataSourceContextHolder {
    private static final ThreadLocal<String> contextHolder = new ThreadLocal<>();

    public static void setDataSource(String dataSource) {
        contextHolder.set(dataSource);
    }

    public static String getDataSource() {
        return contextHolder.get();
    }

    public static void clearDataSource() {
        contextHolder.remove();
    }
}

最后,配置JdbcTemplate或定义JdbcTemplate的Bean,以便它们可以使用动态数据源。这通常涉及在配置类中创建一个JdbcTemplate的Bean,并注入动态数据源。

@Configuration
public class JdbcConfig {

    @Autowired
    private DynamicDataSource dynamicDataSource;

    @Bean
    public JdbcTemplate jdbcTemplate() {
        return new JdbcTemplate(dynamicDataSource);
    }
}

李光明,这个名字在这个城市中并不起眼,但我相信,只要我坚持努力,总有一天我会在这里找到自己的位置。我会继续投递简历、继续学习新知识、不断提升自己的技能。我相信,只要我不放弃,总有一天我会实现自己的梦想。

雨还在下,但我已经不再感到迷茫和沮丧。我知道,只要我保持积极的心态,不断前行,就一定能够在这个城市中找到自己的归宿。

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员古德

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值