最近在做oa项目中写到一个功能,就是员工每天的签到和签退.当时想了很久都没有想出来,后来自己上网查了一下spring的定时器,然后就有了思路.
下面我贴上自己用到的这个定时器的配置.希望能够和大家一起学习.
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:task="http://www.springframework.org/schema/task" http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.0.xsd">
<!-- spring触发器定时器开关 --> <task:annotation-driven /> <task:scheduled-tasks> <!--这里设置每天的8:30点钟,执行考勤方法,检查每个员工谁没有签到 --> <task:scheduled ref="taskManual" method="autoManual" cron="0 30 8 * * ?" /> </task:scheduled-tasks>
</beans>
这个是我的pojo类
public class AutoManual { /** * 自动检测考勤方法 * @author 吕兵阳 * @return */ public void autoManual(){ ApplicationContext applicationContext = new ClassPathXmlApplicationContext("classpath:config/applicationContext.xml"); ManualsignService manualsignService = (ManualsignService) applicationContext.getBean("manualsignService"); EmployeeService employeeService = (EmployeeService) applicationContext.getBean("employeeService"); List<Manualsign>manuals = manualsignService.findManualignsByToday();//获取所有的今天签到的考勤 List<Employee> employees = employeeService.findEmployees();//获取所有的员工 System.out.println("总共的员工数:"+employees.size()); List<Employee> temp = new ArrayList<Employee>(); for (Manualsign manual : manuals) { for (Employee employee : employees) { if(manual.getEmployee().getEmpId().equals(employee.getEmpId())){ temp.add(employee); } } } employees.removeAll(temp); for (Employee employee : employees) { if(employee!=null){ Manualsign manual = new Manualsign(); manual.setEmployee(employee); manual.setEndTime(null); Calendar cal = Calendar.getInstance(); manual.setStartTime(cal.getTime()); manual.setManOffStatus(null); manual.setManStatus(2); manualsignService.addManualsign(manual); } } System.out.println("今天没有签到的员工数:"+employees.size()); } }
这个是我的spring里面配置的bean: <bean id="taskManual" class="com.accp.office.util.AutoManual"></bean>
首先要引入spring定时器这个命名空间,然后我们只需要简单的配置.ref是我们在spring里面配置的一个pojo类,也就是一个普通的bean,method方法,指向我们需要调用的那个方法,如果有多个可以用","号隔开,cron的配置大家可以看这方面的文档,当然我给大家提供一份:
其中时间的定义按以下例子模仿
表达式
Java代码
意义
"0/10 * * * * ?" 每十秒触发
"0 0/1 * * * ?" 每一分钟触发
"0 0 12 * * ?" 每天中午12点触发
"0 15 10 ? * *" 每天上午10:15触发
"0 15 10 * * ?" 每天上午10:15触发
"0 15 10 * * ? *" 每天上午10:15触发
"0 15 10 * * ? 2005" 2005年的每天上午10:15触发
"0 * 14 * * ?" 在每天下午2点到下午2:59期间的每1分钟触发
"0 0/5 14 * * ?" 在每天下午2点到下午2:55期间的每5分钟触发
"0 0/5 14,18 * * ?" 在每天下午2点到2:55期间和下午6点到6:55期间的每5分钟触发
"0 0-5 14 * * ?" 在每天下午2点到下午2:05期间的每1分钟触发
"0 10,44 14 ? 3 WED" 每年三月的星期三的下午2:10和2:44触发
"0 15 10 ? * MON-FRI" 周一至周五的上午10:15触发
"0 15 10 15 * ?" 每月15日上午10:15触发
"0 15 10 L * ?" 每月最后一日的上午10:15触发
"0 15 10 ? * 6L" 每月的最后一个星期五上午10:15触发
"0 15 10 ? * 6L 2002-2005" 2002年至2005年的每月的最后一个星期五上午10:15触发
"0 15 10 ? * 6#3" 每月的第三个星期五上午10:15触发
相关推荐
spring定时器spring定时器spring定时器spring定时器spring定时器
Spring中的Quartz配置-Spring-定时器-java定时器.doc
spring定时器spring定时器spring定时器spring定时器spring定时器spring定时器spring定时器spring定时器spring定时器spring定时器spring定时器spring定时器
spring2.5 定时器任务 spring2.5 定时器任务 spring2.5 定时器任务 spring2.5 定时器任务
spring实现定时器
Spring Quartz 定时器示例(Web工程版),欢迎下载。
spring定时器spring定时器spring定时器spring定时器
spring定时器Spring定时器的两种实现方式Java的Timer类和OpenSymphony的Quartz。
spring的定时器设置,里面包含spring2.x和3.x的配置
springAop与spring定时器
在网上找了很多定时器的实现,主要有2种:一是继承java.util.TimerTask,一种是使用Quartz,我开始选用了Quartz,但是Common-collection.jar出了问题,后来就都不用了,自己写了一个普通类,用spring的AOP对方法进行拦截,...
java定时器 spring定时器:包括spring定时器的详细配置以及说明 包含所需的jar包
使用spring 实现的两种定时任务,使用eclipse直接导入就可使用
动态修改参数cron的值来实现Spring自带定时器动态的执行任务
完整的spring定时器配置,自己整理收藏的。
比较全面的定时器,里面有例子,照着例子就可以学会spring和java定时器。
web spring 定时器
NULL 博文链接:https://liyaojin.iteye.com/blog/1197191
Spring Quartz定时器 Spring Quartz定时器 Spring Quartz定时器 Spring Quartz定时器
Spring Quartz 定时器示例(Java工程版),欢迎下载。