java定时器

1、 首先在导入 Spring 所有包的前提下还要导入一个定时器包: quartz-1.6.2.jar ,然后在写一个要执行的任务类,如下:

public class Prison  {

 

    public Prison() {}

 

    public void execute() {

          List<Into_Prison> prisonlist = new ArrayList<Into_Prison>();

          prisonlist=into_prisonService.getAll();

          if(prisonlist.size()!=0 ){

                

                 for(Into_Prison prison : prisonlist){

                        if(Integer.parseInt(prison.getIp_Leftday())>0){

                 prison.setIp_Leftday(String.valueOf(Integer.parseInt(prison.getIp_Leftday())-1));

                               into_prisonService.save(prison);

                        }else{

                               prison.setIp_Leftday("0");

                               into_prisonService.save(prison);

                        }

                 }

          }

      //System.out.println("======= 执行了吗 ============");

    }

 

    private Into_PrisonService into_prisonService;

 

       public Into_PrisonService getInto_prisonService() {

              return into_prisonService;

       }

 

       public void setInto_prisonService(Into_PrisonService into_prisonService) {

              this.into_prisonService = into_prisonService;

       }

 

  

 

  }

 

 

2、 然后在 Spring 中的配置文件如下:

 

< bean id = "prison" class = "com.prison.action.Prison" >

    < property name = "into_prisonService" ref = "into_prisonService" />

</ bean >

    以上配置为给任务类的注入

< bean id = "saveProjectJob" class = "org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean" >

         < property name = "targetObject" >

            < ref local = "prison" />

        </ property >

        < property name = "targetMethod" >

            < value > execute </ value >

        </ property >

  </ bean >

  指定任务类中执行的方法: execute ,把任务类的注入给 Spring.

    < bean id = "timeTrigger" class = "org.springframework.scheduling.quartz.CronTriggerBean" >

       < property name = "jobDetail" >

           < ref local = "saveProjectJob" />

       </ property >

       < property name = "cronExpression" >

           < value > 59 59 23 * * ? </ value >

       </ property >

  </ bean >

    设置定时器的时间, 59 59 23 * * ? 为在每天的 23 59 59 执行

< bean id = "scheduler" class = "org.springframework.scheduling.quartz.SchedulerFactoryBean" >

        < property name = "triggers" >

          < list >

            < ref bean = "timeTrigger" />

          </ list >

        </ property >

</ bean >

执行定时器

 

以上定时器主要完成的是把数据库里某个字段的数据过一天就减少一天。

需要注意的是

1 、在 <Beans> 中不能够设置 default-lazy-init="true", 否则定时任务不触发,如果不明          确指明 default-lazy-init 的值,默认是 false
      
2、在 <Beans> 中不能够设置 default-autowire="byName" 的属性,否则后台会报        org.springframework.beans.factory.BeanCreationException 错误,这样就     不能通过 Bean 名称自动注入,必须通过明确引用注入。

 

 


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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值