原因:java.lang.NoSuchMethodException Spring 批量 xml 配置

Caused by: java.lang.NoSuchMethodException Spring Batch xml configuration

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

   <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 配置并使用纯基于注释的代码。

我相信它正在尝试找到一个没有参数的方法,但是你的 HttpServletRequest req, HttpServletResponse res

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