您的位置:首页 > 编程语言 > Java开发

Spring MVC quartz定时执行问题

2014-09-28 10:50 183 查看
第一次使用Spring Mvc框架做项目,由于数据量较大,需要设置每天半夜固定的时间点执行数据转存,但是由于Controller里定时执行的方法中采用的@Service注入,一直报Service空指针异常,问题在半个月前我发的一篇求助帖中有详细说明。 http://ask.csdn.net/questions/151948
帖子放了半个多月没人解答,经过长时间查找资料,终于能够实现了,亲测可用,暂时不知道之前的空指针异常问题出在哪里,先奉上解决方案。

 <!-- 要调用的工作类 -->  
   <bean id="glybController" class="org.mnis.web.GlybController"></bean>  
   <!-- 定义调用对象和调用对象的方法,以上为管理员表Controller -->  
   <bean id="jobtask"  

        class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">  
       <!-- 调用的类 -->  
       <property name="targetObject">  
           <ref bean="glybController" />  <!-- 对应调用工作类的bean id-->
       </property>  
       <!-- 调用类中的方法 -->  
       <property name="targetMethod">  

            <value>initSys</value>   <!-- 对应调用工作类的 GlybController里要实现定时执行的方法initSys实现系统初始化,本方法为定时执行的方法-->

        </property> 
   </bean>  

    <!-- 定义触发时间 -->  
   <bean id="doTime"  
       class="org.springframework.scheduling.quartz.CronTriggerBean">  
       <property name="jobDetail">  
           <ref bean="jobtask" />  
       </property>  
       <!-- cron表达式 -->  
       <property name="cronExpression">  

            <!-- 每各执行一次-->  
           <!-- <value>0 */1 * * * ?</value>   -->
           <value>0 0 10 * * ?</value>  <!-- 定义在每天早上10点自动执行 -->
       </property>  
   </bean>  
   <!-- 总管理类 如果将lazy-init='false'那么容器启动就会执行调度程序 -->  
   <bean id="startQuartz" lazy-init="false" autowire="no"  
       class="org.springframework.scheduling.quartz.SchedulerFactoryBean">  
       <property name="triggers">  
           <list>  
               <ref bean="doTime" />  

            </list>  
       </property>  
   </bean>  

至于controller里面的方法如何写还有web.xml里对于spring的配置,我就不给大家贴出来了。

controller里面是采取的Service注入的方法

@Resource
private BrbService brbService;

@RequestMapping("/initSys.do")
public ModelAndView initSys() throws Exception{

       this.brbService.saveOrUpdateBrb(brb);

}

以前的方法一直都是可以实现定时执行,但是在    this.brbService.saveOrUpdateBrb(brb);就会报空指针异常,显示brbService为空。现在终于解决了!!!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: