如何在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框架有一定的了解。