SSM和SpringBoot——Quartz定时任务

SSM和SpringBoot——Quartz定时任务

        • SSM整合
            • 新建Maven工程
            • 引入pom依赖,这里不需要用到全部(先全部贴出来)
            • 创建测试类
            • 创建quartz.properties配置文件
            • 创建spring配置文件(applicationContext.xml)
            • 创建SpringMVC配置文件(spring-servlet.xml)
            • 配置web.xml
            • 配置Tomcat
            • 启动Tomcat
        • SpringBoot整合
            • pom.xml
            • 测试类
            • 启动类

SSM整合

新建Maven工程

SSM和SpringBoot——Quartz定时任务_第1张图片
把web.xml文件生成
SSM和SpringBoot——Quartz定时任务_第2张图片
SSM和SpringBoot——Quartz定时任务_第3张图片
SSM和SpringBoot——Quartz定时任务_第4张图片
SSM和SpringBoot——Quartz定时任务_第5张图片

引入pom依赖,这里不需要用到全部(先全部贴出来)
<properties>
        <spring.version>4.3.7.RELEASE</spring.version>
</properties>
    
<dependencies>
		<!-- junit3使用编程方式,junit4使用注解方式 -->
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>4.12</version>
			<scope>test</scope>
		</dependency>

		<!-- 补全项目依赖 -->
		<!-- 1.日志 -->
		<!-- java日志:slf4j, log4j, logback, common-logging slf4j是规范、接口,编程方式 日志实现:log4j, 
			logback, common-logging 使用slf4j+logback -->
		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-api</artifactId>
			<version>1.7.7</version>
		</dependency>
		<dependency>
			<groupId>ch.qos.logback</groupId>
			<artifactId>logback-core</artifactId>
			<version>1.1.1</version>
		</dependency>
		<!-- 实现slf4j接口并整合 -->
		<dependency>
			<groupId>ch.qos.logback</groupId>
			<artifactId>logback-classic</artifactId>
			<version>1.1.1</version>
		</dependency>

		<!-- 2.数据库相关依赖 -->
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<version>5.1.6</version>
			<scope>runtime</scope>
		</dependency>
		<dependency>
			<groupId>com.alibaba</groupId>
			<artifactId>druid</artifactId>
			<version>1.0.18</version>
		</dependency>

		<!-- 3.DAO层框架依赖:Mybatis -->
		<dependency>
			<groupId>org.mybatis</groupId>
			<artifactId>mybatis</artifactId>
			<version>3.3.0</version>
		</dependency>
		<!-- Mybatis自身实现的spring整合依赖 -->
		<dependency>
			<groupId>org.mybatis</groupId>
			<artifactId>mybatis-spring</artifactId>
			<version>1.2.3</version>
		</dependency>

		<!-- 4.servlet-web相关依赖 -->
		<dependency>
			<groupId>taglibs</groupId>
			<artifactId>standard</artifactId>
			<version>1.1.2</version>
		</dependency>
		<dependency>
			<groupId>jstl</groupId>
			<artifactId>jstl</artifactId>
			<version>1.2</version>
		</dependency>
		<dependency>
			<groupId>com.fasterxml.jackson.core</groupId>
			<artifactId>jackson-databind</artifactId>
			<version>2.5.0</version>
		</dependency>
		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>javax.servlet-api</artifactId>
			<version>3.1.0</version>
		</dependency>

		<!-- 5.Spring依赖 -->
		<!-- 5.1Spring核心依赖 -->
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-core</artifactId>
			<version>${spring.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-beans</artifactId>
			<version>${spring.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-context</artifactId>
			<version>${spring.version}</version>
		</dependency>
		<!-- 5.2Spring dao依赖 -->
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-jdbc</artifactId>
			<version>${spring.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-tx</artifactId>
			<version>${spring.version}</version>
		</dependency>
		<!-- 5.3Spring web依赖 -->
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-web</artifactId>
			<version>${spring.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-webmvc</artifactId>
			<version>${spring.version}</version>
		</dependency>
		<!-- 5.4Spring test依赖:方便做单元测试和集成测试 -->
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-test</artifactId>
			<version>${spring.version}</version>
		</dependency>

		<!-- 6.文件上传 -->
		<dependency>
			<groupId>commons-io</groupId>
			<artifactId>commons-io</artifactId>
			<version>1.3.2</version>
		</dependency>
		<dependency>
			<groupId>commons-fileupload</groupId>
			<artifactId>commons-fileupload</artifactId>
			<version>1.2.1</version>
		</dependency>

		<!-- 7.fastjson -->
		<dependency>
			<groupId>com.alibaba</groupId>
			<artifactId>fastjson</artifactId>
			<version>1.2.35</version>
		</dependency>

		<!-- 定时任务 -->
		<dependency>
			<groupId>org.quartz-scheduler</groupId>
			<artifactId>quartz</artifactId>
			<version>2.2.1</version>
		</dependency>

		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-context-support</artifactId>
			<version>${spring.version}</version>
		</dependency>
	</dependencies>
创建测试类
package com.xueqimiao.quartz;
import java.util.Date;
public class QuartzTest {
	private void configureTasks() {
        System.out.println("执行静态定时任务时间:" + new Date());
    }
}
创建quartz.properties配置文件
# the job scheduler name
org.quartz.scheduler.instanceName=MyScheduler

# auto set the instance id
org.quartz.scheduler.instanceId=AUTO

# the job thread in thread pool, which means the max threads can run in the same time 
org.quartz.threadPool.threadCount=1

# the thread's priority
org.quartz.threadPool.threadPriority = 5

# the job data storage is memory but not database
org.quartz.jobStore.class = org.quartz.simpl.RAMJobStore

# the max delay for the task execute speed time, set 2 minutes
#org.quartz.jobStore.misfireThreshold = 120000

# auto create the parent thread
#org.quartz.threadPool.threadsInheritContextClassLoaderOfInitializingThread=true
创建spring配置文件(applicationContext.xml)

这里有多余的配置,方便整合别的插件、功能

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
	xmlns:tx="http://www.springframework.org/schema/tx"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
		http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd">

	<context:component-scan base-package="com.xueqimiao.service"></context:component-scan>

	 <!-- druid数据源-->
	 <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
		<property name="driverClassName" value="com.mysql.jdbc.Driver" />
		<property name="url" value="jdbc:mysql://localhost:3306/test"></property>
		<property name="username" value="root"></property>
		<property name="password" value="1234"></property>
	</bean> 


	<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
		<property name="dataSource" ref="dataSource"></property>
		<property name="typeAliasesPackage" value="entity"></property>
	</bean>

	<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
		<property name="basePackage" value="mapper"></property>
	</bean>

	<bean id="transactionManager"
		class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
		<property name="dataSource" ref="dataSource"></property>
	</bean>
	
	<bean id="tesrQuartz" class="com.xueqimiao.quartz.QuartzTest" ></bean>
	<bean id="tesrQuartzDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
		<property name="targetObject" ref="tesrQuartz" />
		<property name="targetMethod" value="configureTasks" />
		<property name="concurrent" value="false"/>
	</bean>
	<bean id="tesrQuartzTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
		<property name="jobDetail" ref="tesrQuartzDetail" />
		<!--每月最后一天早上90 0 09 L * ? -->
		<!--5秒执行一次 0/5 * * * * ?  -->
		<property name="cronExpression" value="0/5 * * * * ?" />
	</bean>
	<bean id="tesrQuartzDetailDetailScheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
		<property name="configLocation" value="classpath:quartz.properties" />
		<property name="overwriteExistingJobs" value="true" />
		<property name="autoStartup" value="true" />
		<property name="triggers">
			<list>
				<ref bean="tesrQuartzTrigger"/>
			</list>
		</property>
	</bean>
	<tx:annotation-driven transaction-manager="transactionManager" />

</beans>
创建SpringMVC配置文件(spring-servlet.xml)

可以不创建,这里贴一段配置

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:c="http://www.springframework.org/schema/c"
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:mvc="http://www.springframework.org/schema/mvc"
	xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd
		http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd">

	<context:component-scan base-package="com.xueiqmiao.controller"></context:component-scan>

	<bean
		class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<property name="prefix" value="/WEB-INF/"></property>
		<property name="suffix" value=".jsp"></property>
	</bean>

	<mvc:annotation-driven />
	<mvc:default-servlet-handler />
	
</beans>
配置web.xml
<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>classpath:applicationContext.xml</param-value>
	</context-param>

	<listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>

	<servlet>
		<servlet-name>spring</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<init-param>
			<param-name>contextConfigLocation</param-name>
			<param-value>classpath*:spring-servlet.xml</param-value>
		</init-param>
		<load-on-startup>1</load-on-startup>
	</servlet>
	<servlet-mapping>
		<servlet-name>spring</servlet-name>
		<url-pattern>/</url-pattern>
		<!-- <url-pattern>*.html</url-pattern> -->
	</servlet-mapping>

	<!-- 乱码 -->
	<filter>
		<filter-name>encodingFilter</filter-name>
		<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
		<init-param>
			<param-name>encoding</param-name>
			<param-value>UTF-8</param-value>
		</init-param>
		<init-param>
			<param-name>forceEncoding</param-name>
			<param-value>true</param-value>
		</init-param>
	</filter>
	<filter-mapping>
		<filter-name>encodingFilter</filter-name>
		<url-pattern>/*
	
配置Tomcat

SSM和SpringBoot——Quartz定时任务_第6张图片
SSM和SpringBoot——Quartz定时任务_第7张图片
SSM和SpringBoot——Quartz定时任务_第8张图片
SSM和SpringBoot——Quartz定时任务_第9张图片
SSM和SpringBoot——Quartz定时任务_第10张图片
SSM和SpringBoot——Quartz定时任务_第11张图片
在这里插入图片描述

-Dfile.encoding=UTF-8

SSM和SpringBoot——Quartz定时任务_第12张图片
SSM和SpringBoot——Quartz定时任务_第13张图片
在这里插入图片描述
SSM和SpringBoot——Quartz定时任务_第14张图片

启动Tomcat

在这里插入图片描述

SpringBoot整合

SSM和SpringBoot——Quartz定时任务_第15张图片

pom.xml
<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.21.RELEASE</version>
    </parent>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>
测试类
package com.xueqimiao.TestQuartz;

import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

import java.util.Date;

@Component
@EnableScheduling
public class Test01 {
    //3.添加定时任务
    @Scheduled(cron = "0/5 * * * * ?")
    //或直接指定时间间隔,例如:5秒
    //@Scheduled(fixedRate=5000)
    private void configureTasks() {
        System.err.println("执行静态定时任务时间: " + new Date());
    }
}
启动类
package com.xueqimiao;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class App {
    public static void main(String[] args) {
        SpringApplication.run(App.class,args);
    }
}

在这里插入图片描述
附:GitHub地址 https://github.com/xueqimiao/SSM_QuartzAndSpringBoot_Quartz.git
下期再见。。。

你可能感兴趣的:(spring,spingboot,Quartz,springmvc,java)