- springboot配置多数据源
- pom文件配置
- application.yml配置
- 配置Configuration类
- 配置一个控制器,并启动程序
- 测试
因项目需要用到多数据源,特意从网上找到的一套可行方式,并在本地进行启动,测试
pom文件配置application.yml配置org.springframework.boot spring-boot-starter-jdbc org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-autoconfigure 2.5.7 com.oracle.database.jdbc ojdbc8 21.1.0.0
server:
port: 80
spring:
datasource:
db1:
username: username
password: password2
jdbc-url: jdbc:oracle:thin:@ip:1521:new
driver-class-name: oracle.jdbc.OracleDriver
db2:
username: username2
password: password2
jdbc-url: jdbc:oracle:thin:@ip:1521:new
driver-class-name: oracle.jdbc.OracleDriver
配置Configuration类
import oracle.jdbc.datasource.impl.OracleDataSource;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.jdbc.DataSourceBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import javax.sql.DataSource;
import java.sql.SQLException;
@Configuration
public class DataSourceConfig {
@Primary
@ConfigurationProperties(prefix = "spring.datasource.db1")
@Bean(name = "db1DataSource")
public DataSource masterDataSource() throws SQLException {
return DataSourceBuilder.create().build();
}
@ConfigurationProperties(prefix = "spring.datasource.db2")
@Bean(name = "db2DataSource")
public DataSource heiaxinDataSource() throws SQLException {
return DataSourceBuilder.create().build();
}
}
配置一个控制器,并启动程序
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.datasource.DataSourceUtils;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.List;
import java.util.Map;
@RestController
public class DemoController {
@Autowired
JdbcTemplate jdbcTemplate;
@Autowired
DataSource db1DataSource;
@Autowired
@Qualifier("db2DataSource") // 指定当前db2DataSource使用db2的源
DataSource db2DataSource;
@GetMapping("/getDemo")
public List
测试
直接在流程器访问:http://localhost/getDemo ,控制台打印的数据前两条数据是相同的,第三条是不同的,前提是你的db1和db2同表,数据不同。



