2017-10-08 6 views
-1

Spring MVCを使用して大規模なエンタープライズAPIを構築します。通常、APIは1秒間に最低50要求を同時に実行します。私は春のDIについてほとんど疑いがない。 50人のユーザーが特定のオブジェクトに同時にアクセスし、ObjectがDIを使用して構築されたものを作ってみましょう。そのオブジェクトは別のユーザーのデータを混乱させますか?同時トランザクションでのSpring依存性注入

+0

DIはライフサイクルと配線のみを扱うため、決してスレッドの安全を保証したり、さらには容易にすることはできません。自分で保証する必要があります:) –

+0

Ie.注入されたBeanをスレッドセーフな方法でコード化する必要があります。クラス変数の変更を避けるか、またはそれらが同期メカニズムによって保護されていることを確認してください。 –

答えて

0

春では、デフォルトで作成されるオブジェクトはシングルトンです。つまり、Springによって1つのオブジェクトのみが作成され、必要に応じて同じオブジェクトが注入されます。したがって、あなたのコードが非同期的にそのオブジェクトに変更を加えると、オブジェクトの状態が破壊される可能性があります。

このように注入されたオブジェクトの変更が必要な場合は、最初に取り除くことをお勧めします。しかし、これらのオブジェクトがリクエストごとに別々に使用され、次にシングルトンの代わりにSpring Beanをプロトタイプとして構成することも考えてみましょう。これにより、すべてのDIインスタンスに対して新しいオブジェクトが作成されます。しかし、このアプローチでは、非常に多くのオブジェクトを作成してメモリをオーバーフローさせる可能性があるため、最大限の注意が必要です。

こちらがお役に立てば幸いです。