springboot配置mysql、oracle两个数据源application.yml怎么配置
时间: 2023-09-05 10:10:36 浏览: 189
可以按照以下方式在application.yml中配置两个数据源:
```yaml
spring:
datasource:
# mysql 数据源配置
mysql:
url: jdbc:mysql://localhost:3306/mysql_db
username: root
password: root
driver-class-name: com.mysql.jdbc.Driver
# oracle 数据源配置
oracle:
url: jdbc:oracle:thin:@localhost:1521:oracle_db
username: oracle
password: oracle
driver-class-name: oracle.jdbc.driver.OracleDriver
# 可以在其他地方引用这两个数据源配置
mybatis:
configuration:
# 使用mysql数据源
datasource: ${spring.datasource.mysql}
```
在上面的示例中,我们定义了两个数据源:mysql和oracle。每个数据源都有不同的URL、用户名、密码和驱动程序类名。在其他地方,比如MyBatis的配置中,可以使用`${spring.datasource.mysql}`来引用mysql数据源的配置。
相关问题
springboot配置mysql、oracle两个数据源
在Spring Boot中配置多个数据源可以通过使用多个DataSource来实现。以下是配置MySQL和Oracle数据源的步骤:
1. 引入依赖
在pom.xml文件中添加如下依赖:
```xml
<!-- MySQL驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!-- Oracle驱动 -->
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc6</artifactId>
<version>11.2.0.4</version>
</dependency>
```
2. 配置数据源
在application.yml或application.properties文件中,添加以下配置:
```yaml
# MySQL 数据源配置
spring.datasource.mysql.url=jdbc:mysql://localhost:3306/mysql?useSSL=false&serverTimezone=UTC&characterEncoding=utf8
spring.datasource.mysql.username=root
spring.datasource.mysql.password=root
spring.datasource.mysql.driver-class-name=com.mysql.jdbc.Driver
# Oracle 数据源配置
spring.datasource.oracle.url=jdbc:oracle:thin:@localhost:1521:orcl
spring.datasource.oracle.username=system
spring.datasource.oracle.password=oracle
spring.datasource.oracle.driver-class-name=oracle.jdbc.driver.OracleDriver
```
3. 配置JdbcTemplate
在配置完数据源后,我们可以使用Spring提供的JdbcTemplate来操作数据库。在代码中,我们需要分别创建两个JdbcTemplate对象,如下所示:
```java
@Configuration
public class DataSourceConfig {
@Bean(name = "mysqlJdbcTemplate")
public JdbcTemplate mysqlJdbcTemplate(@Qualifier("mysqlDataSource") DataSource dataSource) {
return new JdbcTemplate(dataSource);
}
@Bean(name = "oracleJdbcTemplate")
public JdbcTemplate oracleJdbcTemplate(@Qualifier("oracleDataSource") DataSource dataSource) {
return new JdbcTemplate(dataSource);
}
@Bean(name = "mysqlDataSource")
@ConfigurationProperties(prefix = "spring.datasource.mysql")
public DataSource mysqlDataSource() {
return DataSourceBuilder.create().build();
}
@Bean(name = "oracleDataSource")
@ConfigurationProperties(prefix = "spring.datasource.oracle")
public DataSource oracleDataSource() {
return DataSourceBuilder.create().build();
}
}
```
在上面的代码中,我们使用@Qualifier注解来指定不同的数据源。我们还定义了两个JdbcTemplate对象,并使用@ConfigurationProperties注解将数据源配置注入到DataSource对象中。这样,我们就可以在代码中通过@Autowired注解来使用这两个JdbcTemplate对象了。
需要注意的是,如果你使用了JPA或MyBatis等持久化框架来操作数据库,那么你需要在这些框架的配置文件中指定不同的数据源。
springboot + mybatis + mysql + oracle + druid数据源连接池 + 自定义注解 + 切面实现多数据源动态切换,配置文件配置在application.yml中
好的,你的问题是关于如何在Spring Boot应用中实现多数据源动态切换,使用的技术包括Spring Boot、MyBatis、MySQL、Oracle、Druid数据源连接池、自定义注解和切面,并且配置文件使用application.yml格式。
首先,需要在pom.xml文件中添加相应的依赖:
```xml
<!--Spring Boot-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<!--MyBatis-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.2.0</version>
</dependency>
<!--MySQL-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.23</version>
</dependency>
<!--Oracle-->
<dependency>
<groupId>com.oracle.database.jdbc</groupId>
<artifactId>ojdbc8</artifactId>
<version>19.3.0.0</version>
</dependency>
<!--Druid-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.2.6</version>
</dependency>
```
接下来,需要在application.yml文件中配置数据源和MyBatis相关的属性,例如:
```yaml
spring:
datasource:
druid:
# 数据源1
db1:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/db1?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8&useSSL=false
username: root
password: root
# 数据源2
db2:
driver-class-name: oracle.jdbc.OracleDriver
url: jdbc:oracle:thin:@localhost:1521:ORCL
username: scott
password: tiger
# 默认数据源
url: jdbc:mysql://localhost:3306/db1?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8&useSSL=false
username: root
password: root
mybatis:
mapper-locations: classpath:mapper/*.xml
type-aliases-package: com.example.demo.entity
```
然后,需要定义一个自定义注解,用于标识哪些方法需要使用哪个数据源:
```java
@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface DataSource {
String value() default "db1";
}
```
在数据源切换的时候,我们需要获取注解上指定的数据源名称,因此需要定义一个切面:
```java
@Aspect
@Component
public class DataSourceAspect {
@Around("@annotation(ds)")
public Object around(ProceedingJoinPoint point, DataSource ds) throws Throwable {
String dataSourceName = ds.value();
DynamicDataSource.setDataSource(dataSourceName);
try {
return point.proceed();
} finally {
DynamicDataSource.clearDataSource();
}
}
}
```
最后,需要定义一个动态数据源,用于实现数据源的切换:
```java
public class DynamicDataSource extends AbstractRoutingDataSource {
private static final ThreadLocal<String> dataSourceHolder = new ThreadLocal<>();
@Override
protected Object determineCurrentLookupKey() {
return dataSourceHolder.get();
}
public static void setDataSource(String dataSourceName) {
dataSourceHolder.set(dataSourceName);
}
public static void clearDataSource() {
dataSourceHolder.remove();
}
}
```
至此,多数据源动态切换的配置就完成了。
阅读全文