mysql quartz_Quartz学习——SSMM(Spring+SpringMVC+Mybatis+Mysql)和Quartz集成详解(四)

=================================================

=================================================

当任何时候觉你得难受了,其实你的大脑是在进化,当任何时候你觉得轻松,其实都在使用以前的坏习惯。

通过前面的学习,你可能大致了解了Quartz,本篇博文为你打开学习SSMM+Quartz的旅程!欢迎上车,开始美好的旅程!

本篇是在SSM框架——Spring+SpringMVC+Mybatis的搭建教程这篇为基础上进行的,如果不了解SSM搭建请先点击闪现到查看详情:闪现

一:环境介绍

工具:Eclipse+ Mysql

框架:Spring+SpringMVC+Mybatis

日志:logback

构建工具:Maven

单元测试:Junit4

Quartz版本:2.2.1

二:SSMM+Quartz集成详解

1:概述

在之前SSM框架的基础集合Quartz写一个简单的Web项目,实现Quartz的动态添加,修改和删除功能!(这里只是对Cron类型的Trigger进行操作)

2:项目结构

bdf110e88279b446bb153a2087677016.png

3:初始化

在项目中找到初始化sql——quartz_test.sql ,导入自己的数据库中!初始化的表信息如下:

qrtz_blob_triggers,

qrtz_calendars,

qrtz_fired_triggers,

qrtz_locks,

qrtz_paused_trigger_grps,

qrtz_scheduler_state,

qrtz_simple_triggers,

qrtz_simprop_triggers,

qrtz_triggers,

user_t

4:配置文件介绍

(1):在ApplicationContext.xml中添加下面的配置:

9ec3fe50738a30c51d701a4db43a43aa.png

(2):添加quartz.properties配置文件

# Default Properties file for use by StdSchedulerFactory

# to create a Quartz Scheduler Instance, if a different

# properties file is not explicitly specified.

#

#============================================================================

# Configure Main Scheduler Properties

#============================================================================

org.quartz.scheduler.instanceName: quartzScheduler

org.quartz.scheduler.instanceId = AUTO

org.quartz.scheduler.rmi.export: false

org.quartz.scheduler.rmi.proxy: false

org.quartz.scheduler.wrapJobExecutionInUserTransaction: false

#============================================================================

# Configure ThreadPool

#============================================================================

org.quartz.threadPool.class: org.quartz.simpl.SimpleThreadPool

org.quartz.threadPool.threadCount: 2

org.quartz.threadPool.threadPriority: 5

org.quartz.threadPool.threadsInheritContextClassLoaderOfInitializingThread: true

org.quartz.jobStore.misfireThreshold: 60000

#============================================================================

# Configure JobStore

#============================================================================

#default config

#org.quartz.jobStore.class: org.quartz.simpl.RAMJobStore

#持久化配置

org.quartz.jobStore.class:org.quartz.impl.jdbcjobstore.JobStoreTX

org.quartz.jobStore.driverDelegateClass:org.quartz.impl.jdbcjobstore.StdJDBCDelegate

org.quartz.jobStore.useProperties:true

#============================================================================

#havent cluster spring

#============================================================================

org.quartz.jobStore.isClustered = false

#数据库表前缀

org.quartz.jobStore.tablePrefix:qrtz_

#org.quartz.jobStore.dataSource:qzDS

#============================================================================

# Configure Datasources

#============================================================================

#JDBC驱动 Sping去管理dataSource ,这里不在配置数据源信息

#org.quartz.dataSource.qzDS.driver:com.mysql.jdbc.Driver

#org.quartz.dataSource.qzDS.URL:jdbc:mysql://localhost:3306/quartz_test

#org.quartz.dataSource.qzDS.user:root

#org.quartz.dataSource.qzDS.password:root

#org.quartz.dataSource.qzDS.maxConnection:10

5:关键代码简单介绍

(1):过滤器

添加过滤器拦截请求,若用户没有登录,则跳转到登录页面!

a. 新增LoginFilter.java,核心代码如下:

@Override

public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws IOException, ServletException {

HttpServletRequest request = (HttpServletRequest) req;

HttpServletResponse response = (HttpServletResponse) resp;

HttpSession session = request.getSession();

//判断Session中是否有登录用户信息

String toke = (String) session.getAttribute(CommonConstant.LONGIN_TOKE);

if(!StringUtils.isEmpty(toke)){

chain.doFilter(req, resp);

}else{

//若没有则,跳转到登录页面

response.sendRedirect(request.getContextPath() + "/user/toLogin");

}

}

b.在web.xml配置过滤器:

LoginFilter

org.ssm.dufy.filter.LoginFilter

LoginFilter

/

(2)BAO和Service接口

Dao主要是用户的一些操作!

public interface IUserDao {

int deleteByPrimaryKey(Integer id);

int insert(User record);

int insertSelective(User record);

User selectByPrimaryKey(Integer id);

int updateByPrimaryKeySelective(User record);

int updateByPrimaryKey(User record);

User findUser(User user);

}

Service主要是对定时任务的一些操作!

package org.ssm.dufy.service;

public interface QuartzService {

/**

* addJob(方法描述:添加一个定时任务)

* (方法适用条件描述: – 可选)

*

* @param jobName

* 作业名称

* @param jobGroupName

* 作业组名称

* @param triggerName

* 触发器名称

* @param triggerGroupName

* 触发器组名称

* @param cls

* 定时任务的class

* @param cron

* 时间表达式 void

* @exception

* @since 1.0.0

*/

public void addJob(String jobName, String jobGroupName,String triggerName, String triggerGroupName, Class cls, String cron);

/**

*

* @param oldjobName 原job name

* @param oldjobGroup 原job group

* @param oldtriggerName 原 trigger name

* @param oldtriggerGroup 原 trigger group

* @param jobName

* @param jobGroup

* @param triggerName

* @param triggerGroup

* @param cron

*/

public boolean modifyJobTime(String oldjobName,String oldjobGroup, String oldtriggerName, String oldtriggerGroup, String jobName, String jobGroup,String triggerName, String triggerGroup, String cron);

/**

* 修改触发器调度时间

* @param triggerName 触发器名称

* @param triggerGroupName 触发器组名称

* @param cron cron表达式

*/

public void modifyJobTime(String triggerName,

String triggerGroupName, String cron);

/**

* 暂停指定的任务

* @param jobName 任务名称

* @param jobGroupName 任务组名称

* @return

*/

public void pauseJob(String jobName,String jobGroupName);

/**

* 恢复指定的任务

* @param jobName 任务名称

* @param jobGroupName 任务组名称

* @return

*/

public void resumeJob(String jobName,String jobGroupName);

/**

* 删除指定组任务

* @param jobName 作业名称

* @param jobGroupName 作业组名称

* @param triggerName 触发器名称

* @param triggerGroupName 触发器组名称

*/

public void removeJob(String jobName, String jobGroupName,

String triggerName, String triggerGroupName);

/**

* 开始所有定时任务。启动调度器

*/

public void startSchedule();

/**

* 关闭调度器

*/

public void shutdownSchedule();

}

操作用户通过Mybatis进行,操作定时器任务,使用的Quartz封装好的接口!

主要的实现代码就不在这里展示!如需查看请看源码!

(3)Controller

(1):UserController

处理一些用户的请求操作!

(2):QuartzController

处理Quartz的请求操作!

6:任务类

package org.ssm.dufy.job;

import java.util.Date;

import org.quartz.Job;

import org.quartz.JobExecutionContext;

import org.quartz.JobExecutionException;

public class HelloWorldJob implements Job{

/**

* "0/5 * * * * ? 五秒运行一次

*/

@Override

public void execute(JobExecutionContext arg0) throws JobExecutionException {

System.out.println("----hello world---" + new Date());

}

}

7:待优化地方

界面的美观性

可以添加Simple类型的Trigger

用户信息的管理

抽象Job的Dao类

。。。。。。

三:运行效果介绍

有两种方式启动本实例项目:

1:Tomcat方式,Tomcat方式不在讲解!

2:Jetty方式

在pom.xml中配置了Jetty的依赖的插件!

org.apache.maven.plugins

maven-war-plugin

2.4

org.mortbay.jetty

jetty-maven-plugin

8.1.15.v20140411

10

9999

manual

/ssm_quratz

8080

60000

在Eclipse运行步骤如在截图:

b313ba45e1fb91ccc757332ac9d8d95e.png

配置的参数:

-server -Xms1024m -Xmx2048m -XX:PermSize=512m -XX:MaxPermSize=512m -XX:+CMSClassUnloadingEnabled -XX:+PrintGCDetails -Xloggc:%M2_HOME%/gc.log -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=%M2_HOME%/java_pid.hproyuan

配置好之后运行启动不报错就ok!

3:运行结果图

(1)登录页面

823eb27446c27f4e539ff5cb628755fb.png

(2)任务列表页面

13a23a98d724ca20d21336a2d14e07ab.png

(3)新增页面(编辑页面和此类似)

9f7d81d67c40bfce24b15acc16d1b243.png

(4)Eclipse控制台打印的信息

0d7ded2ef0a9771428ca0f97f34c4d76.png

四:源码

备注: 由于本人能力有限,文中若有错误之处,欢迎指正。

谢谢你的阅读,如果您觉得这篇博文对你有帮助,请点赞或者喜欢,让更多的人看到!祝你每天开心愉快!

Java编程技术乐园:一个分享编程知识的公众号。跟着老司机一起学习干货技术知识,每天进步一点点,让小的积累,带来大的改变!

扫描关注,后台回复【秘籍】,获取珍藏干货! 99.9%的伙伴都很喜欢

edab560e531bf1d3aeb216535d832bba.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring是一个开源的Java应用框架,可以帮助我们快速开发企业级应用程序。Spring提供了一个轻量级的容器,可以管理应用程序中的各种组件,比如控制器、服务、数据访问对象等。 Spring MVC是Spring框架的一个子模块,它提供了一套用于开发Web应用程序的MVC(Model-View-Controller)架构。通过Spring MVC,我们可以将应用程序的逻辑分离为模型、视图和控制器,并通过注解或配置文件来实现请求的处理和响应的渲染。 MyBatis是一个开源的持久层框架,它提供了一种将数据从数据库中映射到Java对象的方法。MyBatis使用SQL语句来操作数据库,通过配置文件可以将SQL语句和Java对象进行映射。在Spring中,我们可以将MyBatis整合到应用程序中,使用它来访问数据库并操作数据。 Quartz是一个开源的Java定时任务调度框架,它可以帮助我们在应用程序中创建和管理定时任务。Quartz提供了灵活的调度机制,可以设置任务的触发时间、重复间隔等参数。在Spring中,我们可以通过配置文件来创建和管理Quartz定时任务,也可以使用注解来指定任务的触发条件和执行逻辑。 在实际应用中,我们可以使用Spring MVC来处理HTTP请求,并调用MyBatis来访问数据库。同时,通过配置文件或注解,我们可以将Quartz集成到应用程序中,创建动态的定时任务。比如,我们可以在Spring的配置文件中配置一个定时任务,指定任务的触发条件和执行逻辑。当应用程序启动时,Quartz会根据配置文件中的设定来创建任务,并按照设定的触发时间执行任务。 总之,通过整合SpringSpring MVC、MyBatisQuartz,我们可以实现一个具有动态定时任务功能的Java应用程序。这些框架提供了丰富的功能和灵活的配置方式,可以帮助我们快速开发高效的企业级应用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值