如何在Springboot中配置多个数据库?

一、添加数据库依赖

在pom.xml文件中添加需要使用的数据库依赖。例如,如果我们需要使用MySQL和Oracle数据库,则需要添加以下依赖:

mysql

mysql-connector-java

{MySQL版本号}

com.oracle.database.jdbc

ojdbc8

{Oracle版本号}

二、配置数据源

在Spring Boot项目中,我们可以使用application.properties或application.yml配置文件来配置数据源。通常情况下,我们需要为每个数据库配置一个数据源。

使用application.properties配置数据源

在application.properties文件中,我们可以使用以下配置来配置数据源:

# MySQL 数据源配置

spring.datasource.mysql.url={MySQL数据库连接地址}

spring.datasource.mysql.username={MySQL数据库用户名}

spring.datasource.mysql.password={MySQL数据库密码}

spring.datasource.mysql.driver-class-name=com.mysql.cj.jdbc.Driver

# Oracle 数据源配置

spring.datasource.oracle.url={Oracle数据库连接地址}

spring.datasource.oracle.username={Oracle数据库用户名}

spring.datasource.oracle.password={Oracle数据库密码}

spring.datasource.oracle.driver-class-name=oracle.jdbc.driver.OracleDriver

使用application.yml配置数据源

在application.yml文件中,我们可以使用以下配置来配置数据源:

# MySQL 数据源配置

spring:

datasource:

mysql:

url: {MySQL数据库连接地址}

username: {MySQL数据库用户名}

password: {MySQL数据库密码}

driver-class-name: com.mysql.cj.jdbc.Driver

# Oracle 数据源配置

spring:

datasource:

oracle:

url: {Oracle数据库连接地址}

username: {Oracle数据库用户名}

password: {Oracle数据库密码}

driver-class-name: oracle.jdbc.driver.OracleDriver

三、配置JdbcTemplate

在Spring Boot项目中,我们可以使用JdbcTemplate来访问数据库。为了访问多个数据库,我们需要为每个数据库创建一个JdbcTemplate实例。

@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();

}

}

在上述代码中,我们定义了两个JdbcTemplate实例:mysqlJdbcTemplate和oracleJdbcTemplate。每个JdbcTemplate实例都需要一个对应的数据源,因此我们还定义了两个数据源:mysqlDataSource和oracleDataSource。

通过@Bean注解,我们将这些实例注册到Spring容器中。@Qualifier注解用于指定使用哪个数据源。

四、使用JdbcTemplate访问数据库

现在我们已经完成了多个数据库的配置和数据源的创建,可以使用JdbcTemplate来访问数据库了。

@Service

public class UserService {

@Autowired

@Qualifier("mysqlJdbcTemplate")

private JdbcTemplate mysqlJdbcTemplate;

@Autowired

@Qualifier("oracleJdbcTemplate")

private JdbcTemplate oracleJdbcTemplate;

public List getAllUsersFromMySQL() {

String sql = "SELECT * FROM user";

return mysqlJdbcTemplate.query(sql, new BeanPropertyRowMapper<>(User.class));

}

public List getAllUsersFromOracle() {

String sql = "SELECT * FROM user";

return oracleJdbcTemplate.query(sql, new BeanPropertyRowMapper<>(User.class));

}

}

在上述代码中,我们使用@Autowired注解将mysqlJdbcTemplate和oracleJdbcTemplate注入到UserService中。使用JdbcTemplate的query()方法可以执行SQL查询语句并返回结果。

springboot的优点是什么?

1.可快速构建独立的 Spring 应用

Spring Boot是一个依靠大量注解实现自动化配置的全新框架。在构建Spring应用时,我们只需要添加相应的场景依赖,Spring Boot就会根据添加的场景依赖自动进行配置,在无须额外手动添加配置的情况下快速构建出一个独立的Spring应用。

2.直接嵌入Tomcat、Jetty 和Undertow 服务器(无须部署WAR文件)

传统的Spring应用部署时,通常会将应用打成 WAR包形式并部署到Tomcat、Jetty或Undertow 服务器中。Spring Boot框架内嵌了Tomcat、Jetty和Undertow 服务器,而且可以自动将项目打包,并在项目运行时部署到服务器中。

3.通过依赖启动器简化构建配置

在Spring Boot项目构建过程中,无须准备各种独立的JAR文件,只需在构建项目时根据开发场景需求选择对应的依赖启动器“starter”,在引入的依赖启动器“starter”内部已经包含了对应开发场景所需的依赖,并会自动下载和拉取相关JAR包。例如,在Web开发时,只需在构建项目时选择对应的Web场景依赖启动器spring-boot-starter-web,Spring Boot项目便会自动导入spring-webmvc、spring-web、spring-boot-starter-tomcat等子依赖,并自动下载和获取Web开发需要的相关JAR包。

4.自动化配置Spring和第三方库

Spring Boot 充分考虑到与传统Spring 框架以及其他第三方库融合的场景,在提供了各种场景依赖启动器的基础上,内部还默认提供了各种自动化配置类(例如 RedisAuto Configuration)。使用Spring Boot开发项目时,一旦引入了某个场景的依赖启动器,Spring Boot内部提供的默认自动化配置类就会生效,开发者无须手动在配置文件中进行相关配置(除非开发者需要更改默认配置),从而极大减少了开发人员的工作量,提高了程序的开发效率。

5.提供生产就绪功能

Spring Boot提供了一些用于生产环境运行时的特性,例如指标、监控检查和外部化配置。其中,指标和监控检查可以帮助运维人员在运维期间监控项目运行情况;外部化配置可以使运维人员快速、方便地进行外部化配置和部署工作。

6.极少的代码生成和XML配置

Spring Boot 框架内部已经实现了与Spring以及其他常用第三方库的整合连接,并提供了默认最优化的整合配置,使用时基本上不需要额外生成配置代码和XML配置文件。在需要自定义配置的情况下,Spring Boot更加提倡使用Java config(Java 配置类)替换传统的XML配置方式,这样更加方便查看和管理。

虽然说 Spring Boot有诸多的优点,但Spring Boot也有一些缺点。例如,Spring Boot入门较为简单,但是深入理解和学习却有一定的难度,这是因为SpringBoot是在Spring框架的基础上推出的,所以读者想要弄明白Spring Boot的底层运行机制,有必要对Spring框架有一定的了解。

推荐内容