本项目采用框架ssm,首先定时器是单独弄了一个module,在这个module下面,有spring配置,有mybatis配置,还有mybatis的分页插件PageHelper的配置,还有关于流程,redis的配置。因为它作为一个单独的模块是能够独立打包运行的。所以所有的配置文件都应该齐全。
1.配置文件:
applicationContext-task.xml
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xmlns:task="http://www.springframework.org/schema/task" xmlns:context="http://www.springframework.org/schema/context" xmlns:aop="http://www.springframework.org/schema/aop" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-4.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-4.0.xsd"> <task:annotation-driven /> <!-- 定时器开关--> <bean id="homePageTask" class="com.songtech.controller.task.HomePageTask"></bean> <task:scheduled-tasks> <task:scheduled ref="homePageTask" method="start" cron="0 0 1 * * ?"/> </task:scheduled-tasks> <!-- 自动扫描的包名 --> <context:component-scan base-package="com.songtech.controller.task" /> </beans>
2.HomePageTask类
package com.songtech.controller.task; import com.songtech.core.redis.RedisUtil; import com.songtech.dao.Trans; import com.songtech.tddcs.dao.homepage.HomepageMapper; import com.songtech.tddcs.model.homepage.HomepageVO; import com.songtech.tddcs.service.homepage.IHomepageService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; import javax.annotation.PostConstruct; import javax.annotation.Resource; import java.text.DecimalFormat; import java.text.SimpleDateFormat; import java.util.*; /** * 定时任务 * */ @Component public class HomePageTask { private static Logger log = LoggerFactory.getLogger(HomePageTask.class); private static HomePageTask UTIL; @PostConstruct public void init(){ UTIL = this; } @Autowired private RedisUtil redisUtil; @Transactional(Trans.BUSINESS) public void start(){ log.info("定时任务:主页查询开始执行"); //业务逻辑 log.info("同步完成\n"); } }
这个类里面主要有两个方法,init和start。
init是初始化方法,照这样写就好了。
start方法跟前面配置文件那个method里面的方法是一样的。这里面就是写你定时器要执行的东西。
写完之后,部署后就ok了。