Spring3定时器

最近在做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触发 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值