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

(完)

 


微信公众号
原文地址:https://www.cnblogs.com/cnblog-long/p/7235807.html