2016-10-16 17 views
2

Spring 4.3.1を使用してアプリケーションスコープBeanにタスクをスケジュールする際に問題が発生します。私のコードは次のようなものです:Spring 4.3.1スケジュールされたタスクが2回実行される

@Component 
@ApplicationScope 
public class MyClassImpl implements MyClass { 

    @Scheduled(fixedDelayString = "60000") 
    @Transactional 
    public void method() { 
    do something... 
    } 
} 

スケジュールされた方法は2回実行されます。私はアプリケーションコンテキストの作成をデバッグし、Beanが期待どおりに1回だけ読み込まれているようです。 誰かに提案がありますか?

私はBeanPostProcessorを追加し、私は、Springフレームワークは、2つの豆MyClassImplという名前の1とscopedTarget.MyClassImplという名前のこの動作を回避する方法上の任意のアイデアをインスタンス化することに気づきましたか? @Scheduled方法を含む任意のインタフェース(@Component注釈付き)を実装しない新しいクラスを作成解決

+1

アプリケーション(メソッド)は、最後のメソッドの実行完了から何回も実行されます。次回の始動までの間に設定1分の遅延に応じて。あなたが一日一回実行することを期待している場合は、 "cron"が必要です。 http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/scheduling/support/CronSequenceGenerator.html – kuhajeyan

+0

このメソッドは毎分実行されますが、実際には2回連続して実行されます。毎分1-2秒遅れ – TheOni

+0

@Transactionalは作成されるプロキシをマークします。したがって、プロキシも作成されます。あなたは@メソッドを呼び出す外部メソッドに注釈を付けることができますか? – kuhajeyan

答えて

関連する問題