欢迎来到DIVCSS5查找CSS资料与学习DIV CSS布局技术!
一、先创建一个SpringBoot项目
 
还有一个截屏忘了截屏,就是选择保存路径选择一下就点Finish就可以了。 
 
更改application.properties为application.yml
 
application.yml文件如下
 
server:
 
  port: 8080
 
#数据库连接池druid配置
 
spring:
 
  datasource:
 
    #1.JDBC
 
    type: com.alibaba.druid.pool.DruidDataSource
 
    driver-class-name: com.mysql.cj.jdbc.Driver
 
    url: jdbc:mysql://localhost:3306/quartz?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8&useSSL=false
 
    username: root
 
    password: 123
 
    druid:
 
      #2.连接池配置
 
      #初始化连接池的连接数量 大小,最小,最大
 
      initial-size: 5
 
      min-idle: 5
 
      max-active: 20
 
      #配置获取连接等待超时的时间
 
      max-wait: 60000
 
      #配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
 
      time-between-eviction-runs-millis: 60000
 
      # 配置一个连接在池中最小生存的时间,单位是毫秒
 
      min-evictable-idle-time-millis: 30000
 
      validation-query: SELECT 1 FROM DUAL
 
      test-while-idle: true
 
      test-on-borrow: true
 
      test-on-return: false
 
      # 是否缓存preparedStatement,也就是PSCache  官方建议MySQL下建议关闭   个人建议如果想用SQL防火墙 建议打开
 
      pool-prepared-statements: true
 
      max-pool-prepared-statement-per-connection-size: 20
 
      # 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
 
      filter:
 
        stat:
 
          merge-sql: true
 
          slow-sql-millis: 5000
 
      #3.基础监控配置
 
      web-stat-filter:
 
        enabled: true
 
        url-pattern: /*
 
        #设置不统计哪些URL
 
        exclusions: "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*"
 
        session-stat-enable: true
 
        session-stat-max-count: 100
 
      stat-view-servlet:
 
        enabled: true
 
        url-pattern: /druid/*
 
        reset-enable: true
 
        #设置监控页面的登录名和密码
 
        login-username: admin
 
        login-password: admin
 
        allow: 127.0.0.1
 
mybatis:
 
  mapper-locations: classpath*:mapper/*.xml
 
  type-aliases-package: com.zking.quartz02.model
 
二、导入依赖 
 
1.导入Quartz依赖
 
<dependency>
 
<groupId>org.quartz-scheduler</groupId>
 
<artifactId>quartz-jobs</artifactId>
 
<version>2.2.1</version>
 
 </dependency>
 
 <dependency>
 
    <groupId>org.springframework.boot</groupId>
 
    <artifactId>spring-boot-starter-quartz</artifactId>
 
 </dependency>
 
2.用于我用的是Druid数据库连接池,所以我需要更换成Druid连接池,先引入Druid依赖。
 
<dependency>
 
<groupId>com.alibaba</groupId>
 
<artifactId>druid-spring-boot-starter</artifactId>
 
<version>1.1.10</version>
 
</dependency>
 
三、 导入DruidConnectionProvider.java(Druid连接池的Quartz扩展类)
 
package com.zking.quartz02.utils;
 
import com.alibaba.druid.pool.DruidDataSource;
 
import org.quartz.SchedulerException;
 
import org.quartz.utils.ConnectionProvider;
 
import java.sql.Connection;
 
import java.sql.SQLException;
 
/*
 
#============================================================================
 
# JDBC
 
#============================================================================
 
org.quartz.jobStore.driverDelegateClass:org.quartz.impl.jdbcjobstore.StdJDBCDelegate
 
org.quartz.jobStore.useProperties:false
 
org.quartz.jobStore.dataSource:qzDS
 
#org.quartz.dataSource.qzDS.connectionProvider.class:org.quartz.utils.PoolingConnectionProvider
 
org.quartz.dataSource.qzDS.connectionProvider.class:com.zking.q03.quartz.DruidConnectionProvider
 
org.quartz.dataSource.qzDS.driver:com.mysql.jdbc.Driver
 
org.quartz.dataSource.qzDS.URL:jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=UTF-8
 
org.quartz.dataSource.qzDS.user:root
 
org.quartz.dataSource.qzDS.password:root
 
org.quartz.dataSource.qzDS.maxConnections:30
 
org.quartz.dataSource.qzDS.validationQuery: select 0
 
*/
 
/**
 
 * [Druid连接池的Quartz扩展类]
 
 */
 
public class DruidConnectionProvider implements ConnectionProvider {
 
     /*
 
     * ——
 
     *
 
     * 常量配置,与quartz.properties文件的key保持一致(去掉前缀),同时提供set方法,Quartz框架自动注入值。
 
     *
 
     * ——
 
     */
 
    //JDBC驱动
 
    public String driver;
 
    //JDBC连接串
 
    public String URL;
 
    //数据库用户名
 
    public String user;
 
    //数据库用户密码
 
    public String password;
 
    //数据库最大连接数
 
    public int maxConnection;
 
    //数据库SQL查询每次连接返回执行到连接池,以确保它仍然是有效的。
 
    public String validationQuery;
 
    private boolean validateOnCheckout;
 
    private int idleConnectionValidationSeconds;
 
    public String maxCachedStatementsPerConnection;
 
    private String discardIdleConnectionsSeconds;
 
    public static final int DEFAULT_DB_MAX_CONNECTIONS = 10;
 
    public static final int DEFAULT_DB_MAX_CACHED_STATEMENTS_PER_CONNECTION = 120;
 
    //Druid连接池
 
    private DruidDataSource datasource;
 
    /*
 
    * ——
 
    *
 
    * 接口实现
 
    *
 
    * ——
 
    */
 
    public Connection getConnection() throws SQLException {
 
        return datasource.getConnection();
 
    }
 
    public void shutdown() throws SQLException {
 
        datasource.close();
 
    }
 
    public void initialize() throws SQLException{
 
        if (this.URL == null) {
 
            throw new SQLException("DBPool could not be created: DB URL cannot be null");
 
        }
 
        if (this.driver == null) {
 
            throw new SQLException("DBPool driver could not be created: DB driver class name cannot be null!");
 
        }
 
        if (this.maxConnection < 0) {
 
            throw new SQLException("DBPool maxConnectins could not be created: Max connections must be greater than zero!");
 
        }
 
        datasource = new DruidDataSource();
 
        try{
 
            datasource.setDriverClassName(this.driver);
 
        } catch (Exception e) {
 
            try {
 
                throw new SchedulerException("Problem setting driver class name on datasource: " + e.getMessage(), e);
 
            } catch (SchedulerException e1) {
 
            }
 
        }
 
        datasource.setUrl(this.URL);
 
        datasource.setUsername(this.user);
 
        datasource.setPassword(this.password);
 
        datasource.setMaxActive(this.maxConnection);
 
        datasource.setMinIdle(1);
 
        datasource.setMaxWait(0);
 
        datasource.setMaxPoolPreparedStatementPerConnectionSize(this.DEFAULT_DB_MAX_CACHED_STATEMENTS_PER_CONNECTION);
 
        if (this.validationQuery != null) {
 
            datasource.setValidationQuery(this.validationQuery);
 
            if(!this.validateOnCheckout)
 
                datasource.setTestOnReturn(true);
 
            else
 
                datasource.setTestOnBorrow(true);
 
            datasource.setValidationQueryTimeout(this.idleConnectionValidationSeconds);
 
        }
 
    }
 
    /*
 
    * ——
 
    *
 
    * 提供get set方法
 
    *
 
    * ——
 
    */
 
    public String getDriver() {
 
        return driver;
 
    }
 
    public void setDriver(String driver) {
 
        this.driver = driver;
 
    }
 
    public String getURL() {
 
        return URL;
 
    }
 
    public void setURL(String URL) {
 
        this.URL = URL;
 
    }
 
    public String getUser() {
 
        return user;
 
    }
 
    public void setUser(String user) {
 
        this.user = user;
 
    }
 
    public String getPassword() {
 
        return password;
 
    }
 
    public void setPassword(String password) {
 
        this.password = password;
 
    }
 
    public int getMaxConnection() {
 
        return maxConnection;
 
    }
 
    public void setMaxConnection(int maxConnection) {
 
        this.maxConnection = maxConnection;
 
    }
 
    public String getValidationQuery() {
 
        return validationQuery;
 
    }
 
    public void setValidationQuery(String validationQuery) {
 
        this.validationQuery = validationQuery;
 
    }
 
    public boolean isValidateOnCheckout() {
 
        return validateOnCheckout;
 
    }
 
    public void setValidateOnCheckout(boolean validateOnCheckout) {
 
        this.validateOnCheckout = validateOnCheckout;
 
    }
 
    public int getIdleConnectionValidationSeconds() {
 
        return idleConnectionValidationSeconds;
 
    }
 
    public void setIdleConnectionValidationSeconds(int idleConnectionValidationSeconds) {
 
        this.idleConnectionValidationSeconds = idleConnectionValidationSeconds;
 
    }
 
    public DruidDataSource getDatasource() {
 
        return datasource;
 
    }
 
    public void setDatasource(DruidDataSource datasource) {
 
        this.datasource = datasource;
 
    }
 
}

如需转载,请注明文章出处和来源网址:http://www.divcss5.com/html/h64974.shtml