Spring Boot多数据源配置

在Spring Boot应用程序中使用多个数据源可以帮助我们将数据存储在不同的数据库中或者使用不同的数据源。本文将介绍如何在Spring Boot应用程序中配置和使用多个数据源。

整体流程

下面是配置Spring Boot多数据源的整体流程:

步骤 描述
1 添加数据库驱动依赖
2 配置数据源
3 创建实体类
4 创建Repository接口
5 创建Service类
6 创建Controller类
7 测试多数据源

现在,我们将详细解释每个步骤需要做什么。

1. 添加数据库驱动依赖

首先,我们需要在项目的pom.xml文件中添加数据库驱动依赖。假设我们要使用MySQL和Oracle数据库,我们可以添加以下依赖:

<dependencies>
    <!-- MySQL数据库驱动 -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
    </dependency>
    <!-- Oracle数据库驱动 -->
    <dependency>
        <groupId>com.oracle.database.jdbc</groupId>
        <artifactId>ojdbc8</artifactId>
        <version>19.8.0.0</version>
        <scope>runtime</scope>
    </dependency>
</dependencies>

请根据你使用的数据库类型添加相应的驱动依赖。

2. 配置数据源

接下来,我们需要在application.propertiesapplication.yml文件中配置数据源。对于MySQL和Oracle数据库,我们可以在配置文件中添加以下属性:

# MySQL数据源配置
spring.datasource.mysql.url=jdbc:mysql://localhost:3306/mysql_db
spring.datasource.mysql.username=root
spring.datasource.mysql.password=123456
spring.datasource.mysql.driver-class-name=com.mysql.cj.jdbc.Driver

# Oracle数据源配置
spring.datasource.oracle.url=jdbc:oracle:thin:@localhost:1521:xe
spring.datasource.oracle.username=system
spring.datasource.oracle.password=123456
spring.datasource.oracle.driver-class-name=oracle.jdbc.OracleDriver

请根据你的数据库信息进行相应的配置。

3. 创建实体类

创建与数据库表对应的实体类。假设我们有一个用户表,我们可以创建一个User实体类:

@Entity
@Table(name = "user")
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    private String username;
    private String password;
    // 其他属性和方法
}

请根据你的数据库表结构创建相应的实体类。

4. 创建Repository接口

创建用于访问数据库的Repository接口。对于MySQL和Oracle数据库,我们可以创建以下两个接口:

@Repository
public interface UserRepository extends JpaRepository<User, Long> {
}

@Repository
public interface OracleUserRepository extends JpaRepository<User, Long> {
}

这样我们就可以分别使用UserRepositoryOracleUserRepository进行对应数据源的操作。

5. 创建Service类

创建用于业务逻辑的Service类。我们可以创建一个UserService类,示例如下:

@Service
public class UserService {
    @Autowired
    private UserRepository userRepository;

    @Autowired
    private OracleUserRepository oracleUserRepository;

    public List<User> getAllUsers() {
        return userRepository.findAll();
    }

    public List<User> getAllOracleUsers() {
        return oracleUserRepository.findAll();
    }

    // 其他方法
}

在这个示例中,我们注入了UserRepositoryOracleUserRepository,分别对应不同的数据源,并提供了相应的方法用于获取数据。

6. 创建Controller类

创建用于处理HTTP请求的Controller类。我们可以创建一个UserController类,示例如下:

@RestController
@RequestMapping("/users")
public class UserController {
    @Autowired
    private UserService userService;

    @GetMapping("/")
    public List<User> getAllUsers() {
        return userService.getAllUsers();
    }

    @GetMapping("/oracle")
    public List<User> getAllOracleUsers() {
        return userService.getAllOracleUsers();
    }

    // 其他方法
}

在这个示例中,我们注入了UserService,并提供了两个接口分别用于获取所有用户和获取Oracle数据库中的用户。

7. 测试多数据源

最后,我们可以启动应用程序并测试多数据源是否正常工作。可以使用Postman等工具