我想用石英+弹簧计划一个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是静态的。它工作正常。
答案 0 :(得分:0)
如果您使用组件扫描,则必须在类中添加必要的注释:
@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下的包树中。
答案 1 :(得分:0)
你需要定义这样的东西:
<bean id="hotelServiceImpl" class="com.hotelscrapper.HotelServiceImpl">
<!-- some properties here -->
</bean>
正如您在ref="hotelServiceImpl"
bean定义中ScheduleScrapJob
所做的那样,Spring将使用另一个hotelServiceImpl
bean并将其设置为您的ScheduleScrapJob
bean,尤其是它的hotelService
属性。