【问题标题】:Dynamic cron job using quartz+spring使用石英+弹簧的动态 cron 作业
【发布时间】:2014-04-02 22:35:36
【问题描述】:

我想使用quartz+spring 安排一个cron-job。

<context:component-scan base-package="com.hotelscrapper" /> <!--hotelServiceImpl-->
<bean id="ScheduleScrapJob" class="com.hotelscrapper.util.ScheduleScrapJob">
<property name="hotelService" ref="hotelServiceImpl">
</property>
</bean>

public class ScheduleScrapJob extends QuartzJobBean {
private HotelService hotelService;
public void setHotelService(HotelService hotelService){
    this.hotelService = hotelService;
}   
@Override
protected void executeInternal(JobExecutionContext arg0) throws JobExecutionException {
    hotelService.reScrapWorker();
}

}

hotelService 为空。我不明白如何将hotelService 链接到服务hotelServiceImpl

解决方案: hotelService 是静态的。它工作正常。

【问题讨论】:

    标签: java spring cron quartz-scheduler


    【解决方案1】:

    如果你使用组件扫描,你必须在你的类中添加必要的注解:

    @Component
    public class ScheduleScrapJob extends QuartzJobBean {
      @Autowired
      private HotelService hotelService;
    
      @Override
      protected void executeInternal(JobExecutionContext arg0) throws JobExecutionException {
        hotelService.reScrapWorker();
      }
    

    }

    使用此设置,您将不需要 ScheduleScrapJob 类中的酒店服务设置器,您的 xml 配置将是:

    <context:component-scan base-package="com.hotelscrapper" />
    

    这假设您需要扫描的所有类都在 com.hotelscrapper 下的包树中。

    【讨论】:

    • 我使用 为hotelServiceImpl
    • @AbhishekAgarwal 啊,您正在使用组件扫描。我已经更新了我的答案。
    【解决方案2】:

    你需要这样定义:

    <bean id="hotelServiceImpl" class="com.hotelscrapper.HotelServiceImpl">
      <!-- some properties here -->
    </bean>
    

    正如您在ScheduleScrapJob bean 定义中所做的ref="hotelServiceImpl" 一样,Spring 将采用另一个hotelServiceImpl bean 并将其设置到您的ScheduleScrapJob bean 中,特别是设置到它的hotelService 属性中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-10-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-27
      • 1970-01-01
      相关资源
      最近更新 更多