`
xurichusheng
  • 浏览: 335853 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

spring mvc 定时任务,避免同时执行两次

阅读更多

spring版本:3.1.0 或以上

 

1.新建定时任务配置文件

如:applicationContext-jobs.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:task="http://www.springframework.org/schema/task"
	xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/task
http://www.springframework.org/schema/task/spring-task.xsd"
	default-lazy-init="true">

	<!-- 定时器配置 task:executor/@pool-size:可以指定执行线程池的初始大小、最大大小 task:executor/@queue-capacity:等待执行的任务队列的容量 
		task:executor/@rejection-policy:当等待队已满时的策略,分为丢弃、由任务执行器直接运行等方式 -->

	<task:scheduler id="scheduler" pool-size="10" />
	
	<task:executor id="executor" keep-alive="3600"
		pool-size="100-200" queue-capacity="500"
		rejection-policy="CALLER_RUNS" />
	<task:annotation-driven executor="executor"
		scheduler="scheduler" />
</beans>

 

2.  web.xml

 

<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>
			classpath:spring/applicationContext.xml,
			classpath:spring/applicationContext-jobs.xml
		</param-value>
	</context-param>

 

注:不要将 applicationContext-jobs.xml 在 applicationContext.xml 中引入,不然定时任务会同时执行两次

 

3. 定时任务类

@Component 这个注解一定要加上,不然定时器不会执行

 

import org.apache.log4j.Logger;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

/**
 *
 * 
 * @date 2019年3月9日
 * @since JDK 1.8
 */
@Component
public class Job {

	private static final Logger logger = Logger.getLogger(Job.class);

	// 0/15 * * * * ?  15秒钟执行一次
	// 0 0/1 * * * ?  一分钟执行一次
	@Scheduled(cron = "0/15 * * * * ?")
	public void doSomething() {
		logger.info("doSomething");
	}
}

 

pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<groupId>com.wjh</groupId>
	<artifactId>spring3-job</artifactId>
	<packaging>war</packaging>
	<version>0.0.1-SNAPSHOT</version>
	<name>spring3-job Maven Webapp</name>
	<url>http://maven.apache.org</url>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
		<!-- 编译时的编码 -->
		<maven.compiler.source>1.8</maven.compiler.source>
		<maven.compiler.target>1.8</maven.compiler.target>
		<!-- JDK版本 -->
		<project.compile.version>1.8</project.compile.version>

		<spring.version>3.1.0.RELEASE</spring.version>
	</properties>

	<dependencies>
		<!-- Start Spring -->
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-aop</artifactId>
			<version>${spring.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-aspects</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-core</artifactId>
			<version>${spring.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-context</artifactId>
			<version>${spring.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-context-support</artifactId>
			<version>${spring.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-expression</artifactId>
			<version>${spring.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-jdbc</artifactId>
			<version>${spring.version}</version>
		</dependency>

		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-orm</artifactId>
			<version>${spring.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-tx</artifactId>
			<version>${spring.version}</version>
		</dependency>
		<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>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-test</artifactId>
			<version>${spring.version}</version>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-mock</artifactId>
			<version>2.0.8</version>
			<scope>test</scope>
		</dependency>
		<!-- End Spring -->

		<dependency>
			<groupId>quartz</groupId>
			<artifactId>quartz</artifactId>
			<version>1.5.2</version>
		</dependency>

		<dependency>
			<groupId>com.alibaba</groupId>
			<artifactId>fastjson</artifactId>
			<version>1.2.56</version>
		</dependency>

		<dependency>
			<groupId>com.fasterxml.jackson.core</groupId>
			<artifactId>jackson-core</artifactId>
			<version>2.9.8</version>
		</dependency>
		<!-- <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> 
			<version>2.9.8</version> </dependency> -->

		<dependency>
			<groupId>org.codehaus.jackson</groupId>
			<artifactId>jackson-mapper-asl</artifactId>
			<version>1.9.13</version>
		</dependency>

		<dependency>
			<groupId>log4j</groupId>
			<artifactId>log4j</artifactId>
			<version>1.2.17</version>
		</dependency>
		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-api</artifactId>
			<version>1.7.26</version>
		</dependency>
		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-log4j12</artifactId>
			<version>1.7.26</version>
			<scope>test</scope>
		</dependency>

		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>4.12</version>
			<scope>test</scope>
		</dependency>
	</dependencies>
	<build>
		<finalName>spring3-job</finalName>

		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-compiler-plugin</artifactId>
				<version>3.8.0</version>
				<configuration>
					<source>${project.compile.version}</source>
					<target>${project.compile.version}</target>
					<encoding>UTF-8</encoding>
				</configuration>
			</plugin>
			<!-- 打包时跳过单元测试 -->
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-surefire-plugin</artifactId>
				<version>2.22.0</version>
				<configuration>
					<skipTests>true</skipTests>
				</configuration>
			</plugin>
			<!-- 打包后包含所有的依赖的jar包 -->
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-assembly-plugin</artifactId>
				<version>3.1.0</version>
				<configuration>
					<descriptorRefs>
						<descriptorRef>jar-with-dependencies</descriptorRef>
					</descriptorRefs>
				</configuration>
				<executions>
					<execution>
						<id>assemble-all</id> <!-- this is used for inheritance merges -->
						<phase>package</phase> <!-- bind to the packaging phase -->
						<goals>
							<goal>single</goal>
						</goals>
					</execution>
				</executions>
			</plugin>
			<!-- 在Java8下忽略Javadoc的编译错误 -->
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-javadoc-plugin</artifactId>
				<version>2.10.3</version>
				<executions>
					<execution>
						<id>attach-javadocs</id>
						<goals>
							<goal>jar</goal>
						</goals>
						<configuration>
							<additionalparam>-Xdoclint:none</additionalparam>
						</configuration>
					</execution>
				</executions>
			</plugin>
		</plugins>

		<resources>
			<resource>
				<directory>src/main/resources</directory>
				<includes>
					<include>**/*.properties</include>
					<include>**/*.xml</include>
					<include>**/*.tld</include>
				</includes>
				<filtering>false</filtering> <!--这里是false,用true会报 数据库连接 错误 -->
			</resource>
			<resource>
				<directory>src/main/java</directory>
				<includes>
					<include>**/*.properties</include>
					<include>**/*.xml</include>
					<include>**/*.tld</include>
				</includes>
				<filtering>false</filtering>
			</resource>
		</resources>
	</build>
</project>

 

0
0
分享到:
评论

相关推荐

    spring定时任务执行两次的异常排查处理

    一个tomcat下部署了两个应用,一个是普通web应用syncc,另一个应用syncc_wx属于微信公众号后台程序涉及消息定时推送,tomcat未分离...”spring定时任务执行两次的异常排查处理.docx"针对上述描述问题进行分析和解决。

    spring mvc定时任务需要的所有jar包,包括slf4j、log4j

    配置spring mvc定时任务需要的所有jar包,包括slf4j、log4j 因为springmvc的定时任务需要依赖slf4j

    精通Spring MVC 4

    Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。Spring MVC4是当前zuixin的版本,在众多特性上有了进一步的提升。, 在精通Spring...

    spring动态分配定时任务

    2)通过前台动态分配定时任务 可指定多个任务,可同时执行任务,可以精确到时分秒扫描并执行任务 3)可以完成稍微复杂点的任务 比如:2001-10-1 10:10:10 执行任务 执行多少次 好久执行一次 到2001-10-10 10:10:10 ...

    spring-schedule动态刷新定时任务

    最近公司在做一个定时任务,前期采用spring自带的schedule。 场景:添加日程提醒功能。需要进行动态刷新定时任务。因为以前公司都是使用第三方, 比如xxl-job。所有有点不熟悉schedule.参考了网上一些相关资料。写了...

    spring执行定时任务

    Spring中的定时任务介绍 下面我们来看一下Spring中提供的定时任务开发: 在Spring中开发定时任务,分为3个步骤。 1 创建定时任务 2 注册定时任务 3 启动定时任务

    spring java 定时器 执行两次 quartz

    spring定时器代码。解决多次执行问题。包含quartz-all.jar包。 说明很详细。希望能帮上哪位朋友。

    spring+quartz动态定时任务创建 +mybatis

    上一次传错了资源了,这个是正确的,包含quartz动态定时任务的

    spring执行定时任务的规则

    Spring中执行定时任务是个很常见的需求,这里是详细的规则说明,有需要的朋友可以参考,跟linux中的crontab规则很相似。

    Spring 定时任务源码(spring 三种定时任务的实现方式)

    Spring3.x企业应用开发实战 中 Spring 定时任务源码(spring 三种定时任务的实现方式),Spring quartz java 定时器 定时任务 源码

    精通Spring MVC 4 中文

    精通Spring MVC 4 中文

    完美解决多应用服务器负载均衡环境下spring quartz同一定时任务重复执行问题

    NULL 博文链接:https://medbricom.iteye.com/blog/1782765

    spring mvc 官方文档

    本文详细介绍spring MVC的原理和开发心得体会。

    spring mvc quartz 动态设置时间

    spring mvc quartz 动态设置时间,可以实现任务调度的暂停和重启,在页面实现一个功能,可以动态设置调度的表达式,可以开启暂停任务调度

    spring mvc 定时

    spring mvc 定时,根据数据库中设置的时间进行执行

    [免费]Spring MVC学习指南(高清)

    作为当今业界最主流的Web开发框架,Spring MVC已经成为当前最热门的开发技能,同时也广泛用于桌面开发领域。 本书重在讲述如何通过Spring MVC来开发基于Java的Web应用。全书共计12章,分别从Spring框架、模型2和MVC...

    Spring MVC 基于注解实例

    Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于...

    spring mvc源代码

    spring mvc4.1.4 源代码 spring mvc4.1.4 源代码spring mvc4.1.4 源代码spring mvc4.1.4 源代码spring mvc4.1.4 源代码

    SpringCloudSchedule定时任务

    使用mybatis读写mysql数据库, spring实现定时任务, 按照间隔时间或固定时间方式执行定时任务

Global site tag (gtag.js) - Google Analytics