• SpringBoot配置连接两个或多个数据库


    在Spring Boot应用中连接多个数据库或数据源可以使用多种方式,下面介绍两种常用的方法:

    1、使用Spring Boot官方支持的多数据源配置

    Spring Boot提供了官方支持的多数据源配置,可以简单地配置和管理多个数据源。

    需要在application.properties文件中分别添加多个数据源的配置,并通过@Primary注解指定默认数据源。然后,通过@Configuration注解创建一个DataSourceConfig类,将多个数据源注入到该类中,并通过@Bean注解将其注册为Spring Bean。最后,在需要访问某个数据源时,直接使用@Qualifier注解指定具体的数据源即可。

    application.properties文件配置:

    1. # Primary DataSource
    2. spring.datasource.url=jdbc:mysql://localhost:3306/db1
    3. spring.datasource.username=root
    4. spring.datasource.password=root
    5. spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
    6. # Secondary DataSource
    7. spring.second-datasource.url=jdbc:mysql://localhost:3306/db2
    8. spring.second-datasource.username=root
    9. spring.second-datasource.password=root
    10. spring.second-datasource.driver-class-name=com.mysql.cj.jdbc.Driver

    DataSourceConfig类配置:

    1. @Configuration
    2. public class DataSourceConfig {
    3. @Primary
    4. @Bean(name = "primaryDataSource")
    5. @ConfigurationProperties(prefix="spring.datasource")
    6. public DataSource primaryDataSource() {
    7. return DataSourceBuilder.create().build();
    8. }
    9. @Bean(name = "secondDataSource")
    10. @ConfigurationProperties(prefix="spring.second-datasource")
    11. public DataSource secondDataSource() {
    12. return DataSourceBuilder.create().build();
    13. }
    14. }

    在需要访问某个数据源时,直接使用@Qualifier注解指定具体的数据源即可,例如:

    1. @Service
    2. public class UserServiceImpl implements UserService {
    3. @Autowired
    4. @Qualifier("primaryDataSource")
    5. private DataSource primaryDataSource;
    6. @Autowired
    7. @Qualifier("secondDataSource")
    8. private DataSource secondDataSource;
    9. // ...
    10. }

    2、使用第三方库实现多数据源(本次使用Druid连接池

    除了使用Spring Boot官方支持的多数据源配置,也可以使用一些开源的第三方库来实现多数据源的配置。

    例如,使用HikariCP、Druid等连接池,通过手动配置多个数据源并将其注入到Spring容器中,实现对多个数据源的访问。同时,也可以通过AOP等方式来实现动态切换数据源的功能,从而更加灵活地管理多个数据源。

    application.properties文件配置:

    1. # Primary DataSource
    2. jdbc.primary.url=jdbc:mysql://localhost:3306/db1
    3. jdbc.primary.username=root
    4. jdbc.primary.password=root
    5. jdbc.primary.driver-class-name=com.mysql.cj.jdbc.Driver
    6. # Secondary DataSource
    7. jdbc.second.url=jdbc:mysql://localhost:3306/db2
    8. jdbc.second.username=root
    9. jdbc.second.password=root
    10. jdbc.second.driver-class-name=com.mysql.cj.jdbc.Driver

    DataSourceConfig类配置:

    1. @Configuration
    2. public class DataSourceConfig {
    3. @Bean(name = "primaryDataSource")
    4. @ConfigurationProperties(prefix="jdbc.primary")
    5. public DataSource primaryDataSource() {
    6. return new DruidDataSource();
    7. }
    8. @Bean(name = "secondDataSource")
    9. @ConfigurationProperties(prefix="jdbc.second")
    10. public DataSource secondDataSource() {
    11. return new DruidDataSource();
    12. }
    13. }

    在需要访问某个数据源时,可以通过@Qualifier注解指定具体的数据源,例如:

    1. @Service
    2. public class UserServiceImpl implements UserService {
    3. @Autowired
    4. @Qualifier("primaryDataSource")
    5. private DataSource primaryDataSource;
    6. @Autowired
    7. @Qualifier("secondDataSource")
    8. private DataSource secondDataSource;
    9. // ...
    10. }

    需要注意的是,在使用多个数据源时,需要确保每个数据源的配置信息正确,避免出现连接错误或者数据冲突等问题。同时,也需要考虑事务管理、数据同步等问题,以保证多个数据源之间的数据一致性

  • 相关阅读:
    【前端攻城师之JS基础】03函数进阶
    [SpringMVC笔记] SpringMVC-12-放行静态资源访问
    Python爬虫实战:淘宝商品爬取与数据分析
    CSS的选择器
    RegNet架构复现--CVPR2020
    基于springboot+vue的西藏特产销售购物商城系统 elementui
    微服务介绍&微服务环境搭建
    日志、logback、logback.xml --java学习笔记
    SpringMVC获得请求数据类型
    【C语言】【结构体的位段】位段的内存分配及注意事项
  • 原文地址:https://blog.csdn.net/lps12345666/article/details/130530125