2

現在、Spring 3.2.3で動作しています。私たちはこれで2年間、1つのAPIアプリケーションを開発しました。それはうまくいっていた。しかし、Beanクラスが増加するにつれ、Circular依存性に関する例外が発生しました。そこで、application-context.xmlでdefault-lazy-init = "true"を変更することで解決しました。しかし、@ Scheduledについてのもう一つの挑戦は、まったく動いていない。Spring Annotationレイジーロード

メモ:アプリケーションでは春のアノテーションが使用されているため、XMLファイルでは豆が宣言されていません。以下 は、参考のために私のコードです:

applicationContext.xmlを

<beans default-lazy-init="true" xmlns="http://www.springframework.org/schema/beans"> 

Serviceクラス

@Service("notificationService") 
public class NotificationService{ 

    @Scheduled(cron = "0 09 11 * * *") 
    @Async 
    public void sampleNotificaton(){ 

    } 
} 

は、サービスレベルで@Lazy(false)を追加しますが、循環依存の例外がまだ発生するようにしてください。

あなたの提案を気に入ってください。おかげさまで 我々は(ほとんどところで解決するのは非常に簡単です)循環依存関係を壊さないような制約を持っているとして

+0

を私は同じ問題を抱えている。しかし任意のソリューションが見つかりませんでしたか? – Nilesh

+0

私は最初に循環依存を解決しようとします。それは大きなデザインの匂いで、一部のDIコンテナはそれを全く許さない。 – luboskrnac

+0

'@ EnableScheduling'アノテーションを試しましたか? – luboskrnac

答えて

1

することは、私は、スケジューリング注釈が別々の豆に抽出されるだろう、トリックしようとするだろう:

@Component 
public class NotificationScheduler { 
    @Autowired //I prefer contructor injection, but field injection might be needed in this case because or circular dependency 
    private NotificationService notificationService; 

    @Scheduled(cron = "0 09 11 * * *") 
    public void sampleScheduling() { 
     notificationService.sampleNotification(); 
    } 
} 

@Service("notificationService") 
public class NotificationService{ 

    @Async 
    public void sampleNotificaton(){ 

    } 
} 
関連する問題