配置多数据库
使用IDEA基于SpringBoot项目,连接多个数据库或指定连接数据源
当你想要项目中同时想使用两个数据库,或者你想自定义指定使用哪个数据库时,而springboot又不知道你的想法,这怎么办?那就需要让springboot知道你想干嘛。
一、正常情况:
连接
spring:
datasource:
username: root
password: xxxxxx #你的数据库密码
url: jdbc:mysql://localhost:3306/xxxxxxxxxx #你的数据库url
driver-class-name: com.mysql.jdbc.Driver #数据库驱动
type: com.alibaba.druid.pool.DruidDataSource #使用哪种连接池 (如果项目不需要可以不写)
这种情况spring boot会自动识别并注入。
二、使用多个数据库时:
(一)yml配置数据库:使用多个数据连接
连接
spring:
项目数据库的连接
注意:当只有一个连接时,spring会默认连接,并且jdbcUrl是使用 url
当时当有两个连接时,需要一个连接配置类:QuartzDataSourceConfig,并且使用 jdbcUrl
datasource:
username: root
password: xxxxxx #你的数据库密码
jdbcUrl: jdbc:mysql://localhost:3306/xxxxxxxxxx #你的数据库url
driver-class-name: com.mysql.jdbc.Driver #数据库驱动
type: com.alibaba.druid.pool.DruidDataSource #使用哪种连接池 (如果项目不需要可以不写)
定时任务的连接(下面你不用看懂,只要知道这是一个数据库连接即可)
quartz:
job-store-type: jdbc #持久化到数据库
properties:
org:
quartz:
datasource:
driver-class-name: com.mysql.jdbc.Driver
jdbcUrl: jdbc:mysql://localhost:3306/xxxxxxxxxx #你的数据库url
username: root
password: xxxxxx #你的数据库密码
scheduler:
instancName: clusteredScheduler
instanceId: AUTO
jobStore:
class: org.quartz.impl.jdbcjobstore.JobStoreTX
driverDelegateClass: org.quartz.impl.jdbcjobstore.StdJDBCDelegate #StdJDBCDelegate说明支持集群
tablePrefix: QRTZ_
isClustered: true
clusterCheckinInterval: 1000
useProperties: false
threadPool:
class: org.quartz.simpl.SimpleThreadPool
threadCount: 20
threadPriority: 5
(二)配置文件指定主数据库:(告诉springboot怎么使用数据库)
@Configuration
public class QuartzDataSourceConfig {
//主数据源
@Bean
@Primary //主数据库,指向pethome
@ConfigurationProperties(prefix = "spring.datasource")
public DataSource dataSource(){
return DataSourceBuilder.create().build();
}
//为quartz创建一个自己数据源
@Bean
@QuartzDataSource //quartz数据源
@ConfigurationProperties(prefix = "spring.quartz.properties.org.quartz.datasource")
public DataSource quartzDataSource(){
return DataSourceBuilder.create().build();
}
}
'''
这就大功告成了,你可以使用两个数据库了
三、指定数据库那个数据库(虽然springboot会自动配置)
当只有一个数据源连接时,SpringBoot会自动注入,但是你也可以指定(主要是用来学习上面多个数据源接连)
(一)同样开始配置yml文件
连接
spring:
项目数据库的连接
注意:当只有一个连接时,spring会默认连接,并且jdbcUrl是使用 url
当时当有两个连接时,需要一个连接配置类:QuartzDataSourceConfig,并且使用 jdbcUrl
datasource:
username: root
password: xxxxxx #你的数据库密码
jdbcUrl: jdbc:mysql://localhost:3306/xxxxxxxxxx #你的数据库url
driver-class-name: com.mysql.jdbc.Driver #数据库驱动
type: com.alibaba.druid.pool.DruidDataSource #使用哪种连接池 (如果项目不需要可以不写)
(二)配置类
@Configuration
public class DataSourceConfig {
//主数据源
@Bean
@Primary //主数据库
@ConfigurationProperties(prefix = "spring.datasource")
public DataSource dataSource(){
DataSource dataSource = DataSourceBuilder.create().build();
return dataSource;
}
}
大功告成,注意 : #你的数据库url 。多个数据源连接时是jdbcUrl。
当然解决问题的方法一个,