7

Spring アプリケーションの DAO および Service クラスをシングルトンスコープにする必要があると多くの場所で書かれているのを見てきました。
私のアプリケーションには、次のサービスクラスがあります

@Service
public class CustomerServiceImpl implements CustomerService {

    @Autowired
    private CustomerDAO customerDAO;

    .......
    parameterised methods only....
}  

およびDAOクラス

@Repository
public class CustomerDAOImpl implements CustomerDAO {

@Autowired
private SessionFactory sessionFactory;

...............
parameterised methods only....
}  

スコープを定義していないため、デフォルトのスコープはシングルトンです。そのため、CustomerService と CustomerDAO の両方がコンテナーごとに 1 回だけインスタンス化されます。また、DAO クラスは最初に 1 回だけ Service クラスにオートワイヤーされます。つまり、(またはそれを意味するのでしょうか? )何百ものスレッドが両方のクラスの同じインスタンスを使用することになります

この場合、スレッドセーフはどのように保証されるのでしょうか?
xml で定義された hibernate sessionfactory Bean のスコープはどうですか?

spring mvc アプリケーションでの Bean スコープとスレッド セーフについて、私は非常に混乱しています。Springsource のドキュメントでは、Web アプリケーションについてこれらを明確に説明していません。

重い要求の Web アプリケーションに Bean スコープ (DAO、Service、Controller、およびその他の Bean 用) を使用するベスト プラクティスを教えてください。
これらを説明するリンクはすべて私に感謝します。

事前にご提案いただきありがとうございます。

4

1 に答える 1

5

サービスと DAO シングルトンが状態を保持しない (インスタンス変数を保持しない - 他の Bean を除く - メソッド内で操作される) 限り、スレッドの安全性に関して問題はありません。

セッション ファクトリに関して、Spring Web アプリのデフォルトの休止状態セッション スコープは、「リクエストごとに 1 つの休止状態セッション」パターンに基づいています。つまり、http リクエスト (スレッド) ごとに 1 つのセッションがあり、同時実行性について心配する必要はありません。ない。

于 2013-04-02T11:49:06.787 に答える