MySQL是一種常用的關系型數據庫管理系統,支持多個數據庫,可以對多個數據庫進行操作。多數據源是指在一個應用程序中可以訪問多個數據庫。針對多個數據源,我們可以通過以下方式進行實現。
第一種實現方式是在同一個應用程序中定義多個數據源。這種方法的實現比較簡單,我們只需要在應用程序中定義多個數據源即可。例如:
datasource1.url=jdbc:mysql://localhost:3306/database1 datasource1.username=root datasource1.password=root datasource2.url=jdbc:mysql://localhost:3306/database2 datasource2.username=root datasource2.password=root
在應用程序中,我們需要使用多個DataSource來訪問多個數據庫。例如:
@Configuration public class AppConfig { @Bean @Primary @ConfigurationProperties("datasource1") public DataSource dataSource1() { return DataSourceBuilder.create().build(); } @Bean @ConfigurationProperties("datasource2") public DataSource dataSource2() { return DataSourceBuilder.create().build(); } @Bean public JdbcTemplate jdbcTemplate1(@Qualifier("dataSource1") DataSource dataSource) { return new JdbcTemplate(dataSource); } @Bean public JdbcTemplate jdbcTemplate2(@Qualifier("dataSource2") DataSource dataSource) { return new JdbcTemplate(dataSource); } }
第二種實現方式是使用Spring的AbstractRoutingDataSource。這種方法可以根據不同的請求路由到不同的數據源。
public class MultipleDataSource extends AbstractRoutingDataSource { private static final ThreadLocaldataSourceKey = new InheritableThreadLocal<>(); public static String getDataSourceKey() { return dataSourceKey.get(); } public static void setDataSourceKey(String dataSourceName) { dataSourceKey.set(dataSourceName); } @Override protected Object determineCurrentLookupKey() { return getDataSourceKey(); } }
在應用程序中,我們需要使用MultipleDataSource來訪問多個數據庫。例如:
@Configuration public class AppConfig { @Bean @ConfigurationProperties("datasource1") public DataSource dataSource1() { return DataSourceBuilder.create().build(); } @Bean @ConfigurationProperties("datasource2") public DataSource dataSource2() { return DataSourceBuilder.create().build(); } @Bean public MultipleDataSource multipleDataSource() { MultipleDataSource multipleDataSource = new MultipleDataSource(); Map
這樣,就可以在應用程序中訪問多個數據庫了。