SpringBoot整合MySQL和Druid

1、整合MySQL

1.1引入依赖

<!--MySQL连接Java的驱动程序-->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <scope>runtime</scope>
    <version>8.0.13</version>
</dependency>

<!--支持通过jdbc连接数据库库-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>

1.2在application.yaml中添加数据库配置

spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/db1?serverTimezone=Asia/Shanghai&characterEncoding=utf-8&useSSL=false
    username: root
    password: root
    #指定数据源
    type: com.alibaba.druid.pool.DruidDataSource

2、整合Druid

2.1引入依赖

<!--引入druid数据源-->
<!-- https://mvnrepository.com/artifact/com.alibaba/druid -->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <version>1.2.6</version>
</dependency>

2.2在application.yaml中切换数据源,并配置druid

spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/db1?serverTimezone=Asia/Shanghai&characterEncoding=utf-8&useSSL=false
    username: root
    password: root
    #指定数据源
    type: com.alibaba.druid.pool.DruidDataSource
    #druid相关配置
    druid:
      initialSize: 5  # 初始化大小
      minIdle: 5  # 最小连接数
      maxActive: 200 # 最大连接数
      maxWait: 60000 # 配置获取连接等待超时的时间
      timeBetweenEvictionRunsMillis: 60000 # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
      minEvictableIdleTimeMillis: 300000  # 配置一个连接在池中最小生存的时间,单位是毫秒
      validationQuery: SELECT 1 FROM DUAL #验证连接是否有效的sql
      testWhileIdle: true
      testOnBorrow: true #获取连接时先验证连接是否有效
      testOnReturn: true #归还连接时先验证连接是否有效
      logAbandoned: true #标记当Statement或连接被泄露时是否打印程序的stack traces日志
      removeAbandoned: true #如果设置为true, 连接被认为是被泄露并且可以被删除,如果空闲时间超过removeAbandonedTimeout.
      removeAbandonedTimeout: 1800 #泄露的连接可以被删除的超时值, 单位秒,指的是连接获取后1800秒被回收,如果系统中有运行时间比较长的批处理则需要设置尽可能长的时间或关闭removeAbandoned
      poolPreparedStatements: true # 打开PSCache,并且指定每个连接上PSCache的大小
      maxPoolPreparedStatementPerConnectionSize: 20 # 打开PSCache,并且指定每个连接上PSCache的大小
      filters: config,stat,slf4j  # 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
      #decrypt: #自定义的配置文件 druid 加密密码使用的公钥
      #publickey: "MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAKrSUL12l+9R2ErkaaeYKbbQcnysPTgimhfzLYzUAFXk+PUigD4FJQzxCzUxzbQJuOHa388eovptBjMv+/qtkPUCAwEAAQ=="
      #password: "dmiR1nSE6vQbaVJhYeG2jKfScCfHtWsE36y1tPzqzJJH89Ofn7axPQK0rhhunlZqxDrFyswVOWX++royHbCLNA=="
      #connectionProperties: druid.log.stmt.executableSql=true;druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000;config.decrypt=true;config.decrypt.key=${spring.datasource.druid.decrypt.publickey} # 通过connectProperties属性来打开mergeSql功能;慢SQL记录
      connectionProperties: druid.log.stmt.executableSql=true;druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000 #;config.decrypt=true
      useGlobalDataSourceStat: false # 合并多个DruidDataSource的监控数据

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是整合步骤: 1. 在 pom.xml 中添加依赖: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-quartz</artifactId> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>1.1.21</version> </dependency> ``` 2. 在 application.yml 或 application.properties 文件中配置数据源和 Quartz: ```yaml spring: datasource: url: jdbc:mysql://localhost:3306/db_name?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai username: root password: 123456 driver-class-name: com.mysql.jdbc.Driver quartz: job-store-type: jdbc jdbc: initialize-schema: never # 默认值为 always,表示每次启动都会重新初始化表结构,这里设为 never,只在第一次启动时初始化 ``` 3. 创建一个 Quartz 配置类,用于配置 Quartz 的属性: ```java @Configuration public class QuartzConfig { @Autowired private DataSource dataSource; @Bean public SchedulerFactoryBean schedulerFactoryBean() { SchedulerFactoryBean schedulerFactoryBean = new SchedulerFactoryBean(); schedulerFactoryBean.setDataSource(dataSource); schedulerFactoryBean.setQuartzProperties(quartzProperties()); schedulerFactoryBean.setSchedulerName("MyScheduler"); schedulerFactoryBean.setApplicationContextSchedulerContextKey("applicationContext"); schedulerFactoryBean.setAutoStartup(true); schedulerFactoryBean.setStartupDelay(5); return schedulerFactoryBean; } @Bean public Properties quartzProperties() { Properties properties = new Properties(); properties.setProperty("org.quartz.scheduler.instanceName", "MyScheduler"); properties.setProperty("org.quartz.scheduler.instanceId", "AUTO"); properties.setProperty("org.quartz.jobStore.class", "org.quartz.impl.jdbcjobstore.JobStoreTX"); properties.setProperty("org.quartz.jobStore.driverDelegateClass", "org.quartz.impl.jdbcjobstore.StdJDBCDelegate"); properties.setProperty("org.quartz.jobStore.useProperties", "false"); properties.setProperty("org.quartz.jobStore.dataSource", "myDS"); properties.setProperty("org.quartz.jobStore.tablePrefix", "QRTZ_"); properties.setProperty("org.quartz.jobStore.isClustered", "true"); properties.setProperty("org.quartz.threadPool.class", "org.quartz.simpl.SimpleThreadPool"); properties.setProperty("org.quartz.threadPool.threadCount", "10"); properties.setProperty("org.quartz.dataSource.myDS.driver", "com.mysql.jdbc.Driver"); properties.setProperty("org.quartz.dataSource.myDS.URL", "jdbc:mysql://localhost:3306/db_name?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai"); properties.setProperty("org.quartz.dataSource.myDS.user", "root"); properties.setProperty("org.quartz.dataSource.myDS.password", "123456"); properties.setProperty("org.quartz.dataSource.myDS.maxConnections", "10"); return properties; } } ``` 4. 创建一个 Job 类,用于定义具体的任务: ```java public class MyJob implements Job { @Override public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException { // 任务执行逻辑 } } ``` 5. 创建一个 Trigger 类,用于定义任务执行的时间规则: ```java public class MyTrigger { public static Trigger getTrigger() { SimpleScheduleBuilder scheduleBuilder = SimpleScheduleBuilder.simpleSchedule() .withIntervalInSeconds(10) // 每 10 秒执行一次 .repeatForever(); return TriggerBuilder.newTrigger() .withIdentity("MyTrigger", "MyTriggerGroup") .withSchedule(scheduleBuilder) .startAt(new Date()) // 从当前时间开始执行 .build(); } } ``` 6. 在启动类中添加注解 @EnableScheduling,用于开启定时任务: ```java @SpringBootApplication @EnableScheduling public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } } ``` 7. 在需要调度任务的地方,注入 Scheduler 对象,然后调用其 scheduleJob 方法即可: ```java @Autowired private Scheduler scheduler; public void scheduleJob() throws SchedulerException { JobDetail jobDetail = JobBuilder.newJob(MyJob.class) .withIdentity("MyJob", "MyJobGroup") .build(); Trigger trigger = MyTrigger.getTrigger(); scheduler.scheduleJob(jobDetail, trigger); } ``` 以上就是 Spring Boot 整合 Quartz 和 Druid 的步骤。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值