springboot怎么连接两个数据库,一个是主要数据库,当主要数据库连不上,就会自动连接备用数据库
在Spring Boot中,连接多个数据库并设置主从切换可以使用第三方库如JDBC、JPA或者第三方数据源管理工具,如HikariCP或Druid。这里我们以Spring Data JPA为例:
配置两个数据源:
创建一个
DataSourceConfig
类,配置两个@Bean
的JpaProperties
实例,分别对应主备数据库的URL、用户名、密码等信息。 ```java @Configuration public class DataSourceConfig { @Value("${spring.datasource.master.url}") private String masterUrl;@Value("${spring.datasource.master.username}") private String masterUsername;
// ... 同样配置其他属性
@Bean(name = "masterDataSource") @Primary public DataSource masterDataSource() { JpaProperties properties = new JpaProperties(); properties.setDatabasePlatform("org.hibernate.dialect.MySQLDialect"); // 根据实际情况修改 return DataSourceBuilder.create().url(masterUrl).username(masterUsername).build(); }
@Bean(name = "standbyDataSource") public DataSource standbyDataSource() { // 类似配置,只是URL可能不同,比如使用${spring.datasource.standby.url} return ...; }
}
使用Profile来选择数据源: 在application.properties或application.yml文件中添加 profiles.active=production,这将启用主数据库的数据源。如果需要切换到备用数据库,可以临时修改profiles.active为backup。
数据源切换单元测试: 如果有单元测试环境,可能需要手动设置活跃的数据源,例如通过
@ActiveProfiles("backup")
注解。Spring Data JPA的Repository配置: 在Repository上使用
@EnableJpaRepositories
注解,并指定对应的事务管理器(通常是主数据源),然后在Repository接口上方注明数据源名。
@EnableJpaRepositories(basePackages = "com.example.repository", entityManagerFactoryRef = "masterEntityManagerFactory")
public interface UserRepository extends JpaRepository<User, Long> { ... }
相关推荐


















