zoukankan      html  css  js  c++  java
  • Spring Boot 揭秘与实战(二) 数据存储篇

    文章目录

    1. 1. 环境依赖
    2. 2. 数据源
    3. 3. 单元测试
    4. 4. 源代码

    在某些场景下,我们可能会在一个应用中需要依赖和访问多个数据源,例如针对于 MySQL 的分库场景。因此,我们需要配置多个数据源。

    环境依赖

    修改 POM 文件,添加spring-boot-starter-jdbc依赖。

    1. <dependency>
    2. <groupId>org.springframework.boot</groupId>
    3. <artifactId>spring-boot-starter-jdbc</artifactId>
    4. </dependency>

    添加mysql依赖。

    1. <dependency>
    2. <groupId>mysql</groupId>
    3. <artifactId>mysql-connector-java</artifactId>
    4. <version>5.1.35</version>
    5. </dependency>
    6. <dependency>
    7. <groupId>com.alibaba</groupId>
    8. <artifactId>druid</artifactId>
    9. <version>1.0.14</version>
    10. </dependency>

    数据源

    在 src/main/resources/application.properties 中配置数据源信息。

    1. # mysql
    2. spring.datasource.one.driver-class-name=com.mysql.jdbc.Driver
    3. spring.datasource.one.url=jdbc:mysql://localhost:3307/springboot_db1
    4. spring.datasource.one.username=root
    5. spring.datasource.one.password=root
    6.  
    7. spring.datasource.two.driver-class-name=com.mysql.jdbc.Driver
    8. spring.datasource.two.url=jdbc:mysql://localhost:3307/springboot_db2
    9. spring.datasource.two.username=root
    10. spring.datasource.two.password=root

    通过 Java Config 创建 dataSource 和 jdbcTemplate。

    我们设定主数据源为 spring.datasource.one 开头的配置,并添加 @Primary ,这样我们还可以享受 Spring Boot 提供的自动配置 DataSource 的机能。此外,第二数据源配置为 spring.datasource.two 开头的配置。

    1. @Configuration
    2. @EnableTransactionManagement
    3. public class BeanConfig {
    4.  
    5. @Bean(name = "oneDataSource")
    6. @Qualifier("oneDataSource")
    7. @Primary
    8. @ConfigurationProperties(prefix="spring.datasource.one")
    9. public DataSource oneDataSource() {
    10. return DataSourceBuilder.create().build();
    11. }
    12.  
    13. @Bean(name = "twoDataSource")
    14. @Qualifier("twoDataSource")
    15. @ConfigurationProperties(prefix="spring.datasource.two")
    16. public DataSource twoDataSource() {
    17. return DataSourceBuilder.create().build();
    18. }
    19.  
    20. @Bean(name = "oneJdbcTemplate")
    21. public JdbcTemplate oneJdbcTemplate(@Qualifier("oneDataSource") DataSource dataSource) {
    22. return new JdbcTemplate(dataSource);
    23. }
    24. @Bean(name = "twoJdbcTemplate")
    25. public JdbcTemplate twoJdbcTemplate(@Qualifier("twoDataSource") DataSource dataSource) {
    26. return new JdbcTemplate(dataSource);
    27. }
    28. }

    单元测试

    为了验证我们的配置是否正常,我们通过编写单元测试用例来验证吧。

    1. @RunWith(SpringJUnit4ClassRunner.class)
    2. @SpringApplicationConfiguration(WebMain.class)
    3. public class JdbcTest {
    4.  
    5. @Resource(name="oneJdbcTemplate")
    6. protected JdbcTemplate jdbcTemplate1;
    7. @Resource(name="twoJdbcTemplate")
    8. protected JdbcTemplate jdbcTemplate2;
    9.  
    10. @Test
    11. public void test() throws Exception {
    12. jdbcTemplate1.update("insert into t_author(id, real_name, nick_name) values(?, ?, ?)", 2, "梁桂钊", "LiangGzone");
    13. jdbcTemplate2.update("insert into t_author(id, real_name, nick_name) values(?, ?, ?)", 2, "梁桂钊", "LiangGzone");
    14. }
    15. }

    源代码

    相关示例完整代码: springboot-action

    (完)

     


    微信公众号
  • 相关阅读:
    LeetCode20 有效的括号
    函数的多个参数
    定义一个函数的基本语法 函数的参数
    函数
    金字塔
    水仙花数
    百鸡百钱
    循环demo
    while适用于不确定循环次数
    浏览器打断点
  • 原文地址:https://www.cnblogs.com/cnblog-long/p/7235807.html
Copyright © 2011-2022 走看看