首页 > 解决方案 > 引起:java.lang.NoSuchMethodException Spring Batch xml配置

问题描述

我有一个批处理过程,每周星期五执行一次。Spring xml配置如下。

   <bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
    <property name="triggerpo">
          
        <ref bean="cronTriggerForProcessOrder"/>
        
      
      </property>
  </bean>

    
    <bean id="cronTriggerForProcessOrder" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
        <property name="jobDetail" ref="jobForProcessOrders" />
        <property name="cronExpression" value="0 0 0 ? * FRI" />
    </bean>

    <bean id="jobForProcessOrders"
        class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
        <property name="targetObject" ref="ProcessOrdersController" />
        <property name="targetMethod" value="processOrders"/>
        <property name="concurrent" value="false" />
    </bean>
 <bean id="ProcessOrdersController" class="com.java.app.web.controller.ProcessOrderController">
        
    </bean>

在控制器中删除了 @controller 注释,因为它表示控制器已多次初始化。现在我在 tomcat 启动时遇到错误。

Caused by: java.lang.NoSuchMethodException: com.java.app.web.controller.ProcessOrderController.processOrders()

方法processOrders确实存在于控制器中。

    @RequestMapping(value="/processorder")
public class ProcessOrderController {

@RequestMapping(value="/processOrders.do")
    public ModelAndView processOrders(HttpServletRequest req, HttpServletResponse res) throws AppException{
        ModelAndView mav = new ModelAndView();
        mav.setViewName("processorder");
        processOrders();
        return mav;
    }
    }

我不确定我在这方面犯了什么错误。有人可以帮我理解吗?我可以根据要求提供更多信息。

还想知道如何消除 xml 配置并使用基于注释的纯代码。

标签: xmljava-8spring-batchquartz

解决方案


我相信它试图找到一种没有参数的方法,但是你HttpServletRequest req, HttpServletResponse res的 .

作为测试,我建议您尝试删除这些参数。如果你没有得到那个错误,你至少知道往哪个方向看;)


推荐阅读