一个简单的springMVC的定时任务实例

论坛 期权论坛 脚本     
匿名技术用户   2021-1-5 13:29   720   0

创建一个新的web工程,建好工程之后配置工程的build Path,并配好所要的jar包具体如下。

Spring简单框架的结构如下图:

其中一些基本的spring jar包如下图:

接下来就是配置web.xml和spring-mvc.xml文件,如下

Web.xml文件:

<?xmlversion="1.0"encoding="UTF-8"?>

<web-appversion="2.4"xmlns="http://java.sun.com/xml/ns/j2ee"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee

http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

<!--指工程的名字 -->

<display-name>quartzExample</display-name>

<!—详解见web.xml介绍文档 -->

<!-- 指定Spring Bean的配置文件所在目录。默认配置在WEB-INF目录下 -->

<context-param>

<param-name>contextConfigLocation</param-name>

<param-value>classpath*:spring-*.xml</param-value>

</context-param>

<!--Spring配置 -->

<listener>

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

</listener>

<!--Spring MVC配置 -->

<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-mvc.xml</param-value>

</init-param>

<load-on-startup>1</load-on-startup>

</servlet>

<servlet-mapping>

<servlet-name>spring</servlet-name>

<url-pattern>*.do</url-pattern>

</servlet-mapping>

<filter>

<filter-name>SpringEncodingFilter</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>SpringEncodingFilter</filter-name>

<url-pattern>/*</url-pattern>

</filter-mapping>

<welcome-file-list>

<welcome-file>index.jsp</welcome-file>

</welcome-file-list>

</web-app>

Spring-mvc.xml文件:

<?xmlversion="1.0"encoding="UTF-8"?>

<beansxmlns="http://www.springframework.org/schema/beans"

xmlns:context="http://www.springframework.org/schema/context"

xmlns:mvc="http://www.springframework.org/schema/mvc"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="

http://www.springframework.org/schema/beans

http://www.springframework.org/schema/beans/spring-beans-3.0.xsd

http://www.springframework.org/schema/context

http://www.springframework.org/schema/context/spring-context-3.0.xsd

http://www.springframework.org/schema/mvc

http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">

<!-- 注解的配置使得系统能够识别程序中的注解 -->

<!-- 启用springmvc 注解 -->

<context:annotation-config/>

<!-- 配置注解中的扫描包-->

<!-- 设置使用注解的类所在的jar包 -->

<context:component-scanbase-package="com.quartzExample.controller"/>

 <!-- 完成请求和注解POJO的映射 -->

<beanclass="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">

<propertyname="messageConverters">

<array>

<beanclass= "org.springframework.http.converter.StringHttpMessageConverter">

<propertyname="supportedMediaTypes"value ="text/plain;charset=UTF-8" />

</bean>

</array>

</property>

</bean>

   <!-- 对转向页面的路径解析。prefix:前缀, suffix:后缀 -->

<beanid="viewResolver"class="org.springframework.web.servlet.view.InternalResourceViewResolver">

<propertyname="viewClass"value="org.springframework.web.servlet.view.JstlView"/>

<propertyname="prefix"value="/WEB-INF/pages/"/>

<propertyname="suffix"value=".jsp"></property>

</bean>

</beans>


任务调度的xml文件配置

spring-quartz.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">

<beans>
<!-- 线程执行器配置,用于任务注册 -->
<bean id="executor"
class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor">
<property name="corePoolSize" value="10" />
<property name="maxPoolSize" value="100" />
<property name="queueCapacity" value="500" />
</bean>

<!-- 要调用的工作类 -->
<bean id="job" class="com.quartzExample.schedulling.QuartzJob"></bean>

<!--调度业务 : 定义调用对象和调用对象的方法 -->
<bean id="jobtask"
class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<!-- 调用的类 -->
<property name="targetObject" ref="job" />
<!-- 调用类中的方法 -->
<property name="targetMethod" value="work" />
</bean>

<bean id="jobtask2" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject" ref="job"/>
<property name="targetMethod" value="executor"/>
</bean>

<!-- 定义触发时间 -->
<bean id="doTime" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail" ref="jobtask" />
<!-- cron表达式 -->
<property name="cronExpression" value="*/5 * * * * ?" />
</bean>
<bean id="doTime2" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail" ref="jobtask2" />
<property name="cronExpression" value="0 */1 * * * ?" />
</bean>

<!--设置调度 总管理类 如果将lazy-init='false'那么容器启动就会执行调度程序 -->
<bean id="startQuertz" lazy-init="false" autowire="no"
class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="doTime" />
<ref bean="doTime2" />
</list>
</property>
<property name="taskExecutor" ref="executor" />
</bean>


</beans>

任务调度的Java类:

package com.quartzExample.schedulling;

public class QuartzJob {

public void work(){
System.out.println("任务调度!!!启动....");
}

public void executor(){
System.out.println("任务调度!!!停止....");
}

}


分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:7942463
帖子:1588486
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP