2016-03-24 19 views
2

@serviceクラスから@controllerクラスを呼び出すことをお勧めしますか?春のサービスクラスから別のコントローラを呼び出す

現在、別のコントローラ(Spring Boot Project)から直接コントローラを呼び出していますので、間に@serviceレイヤーを導入する予定です。

私に知らせてください

+0

*なぜ*別のコントローラを呼びますか?これは、通常、基本的なOOモデリングの問題を示しています。 – chrylis

答えて

2

私はサービス層からコントローラを直接呼び出すことはありません。循環依存関係が発生する可能性があります。

私はobserver patternを依存性注入によって使用します。コントローラーがインターフェースを実装するとき、それをあなたのサービスにオートワイヤーすることができます。

public interface Observer { 

    void eventHappened(); 

} 

@Controller 
public class YourController implements Observer { 

} 

@Service 
public class YourService { 

    @Autowired 
    private Observer o; 

    // call o.eventHappened() somewhere in your code 
} 

あなたのコントローラはまた、あなたのサービスへの参照を持っている場合は、あなたがオブザーバーを登録するために使用することができますInitializingBeanを使用する必要があります。

+0

返信ありがとうが、私はここで言及するために逃した私は2つの異なるコントローラについて話している。 コントローラAはサービスクラスを呼び出します。サービスクラスはコントローラBを呼び出します – JavaC

+0

同じパターンを適用できます。 – Schrieveslaach

+0

ありがとう!!同じものを実装しようとするだろう – JavaC

関連する問題