0

@Scheduled 機能を使用しようとしています。これこのチュートリアルに従いましたが、スケジュールされたタスクを実行できません。

私はワーカーを作成しました:

@Component("syncWorker")
public class SyncedEliWorker implements Worker {
    protected Logger logger = Logger.getLogger(this.getClass());

    public void work() {
        String threadName = Thread.currentThread().getName();
        logger.debug("   " + threadName + " has began to do scheduled scrap with id=marketwatch2");
    }
}

および SchedulingService:

@Service
public class SchedulingService {
    protected Logger logger = Logger.getLogger(this.getClass());

    @Autowired
    @Qualifier("syncWorker")
    private Worker worker;

    @Scheduled(fixedDelay = 5000)
    public void doSchedule() {
        logger.debug("Start schedule");

        worker.work();
        logger.debug("End schedule");
    }
}

そして、私のアプリケーションコンテキストで別の配線を試みました。最終バージョンは次のようになります。

<beans xmlns=...
       xmlns:task="http://www.springframework.org/schema/task"
       ...
       xsi:schemaLocation=" ..
                            http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.0.xsd">

    <context:annotation-config/>

    <task:annotation-driven executor="taskExecutor" scheduler="taskScheduler"/>
    <task:scheduler id="taskScheduler" pool-size="3"/>
    <task:executor id="taskExecutor" pool-size="3"/>

    ... Other beans...
</beans>

サーバーはエラーなしで起動します。

何か不足していますか?

4

2 に答える 2

8

<context:annotation-config />Bean を検出しません。宣言された Bean の注釈を処理するだけです。これは、あなた@Serviceが実際に豆に変わっていないことを意味します。

<context:component-scan base-package="com.yourcomany" />代わりに使用してください。

于 2013-05-17T06:56:17.197 に答える