springsource
ドキュメントによると、singleton
スコープ Bean は
コンテナーごとに 1 回だけインスタンス化されます。たとえば、ユーザーUserDetails
に関する情報を含むシングルトン スコープの Bean があり
ます。
私の main() メソッドでは:
ApplicationContext context = new ClassPathXmlApplicationContext(new String[] {"Spring-Customer.xml"});
UserDetails ud1 = (UserDetails)context.getBean("userDetails");
custA.setAddress("Address set by ud1");
System.out.println("Address : " + ud1.getAddress());
UserDetails ud2 = (UserDetails)context.getBean("userDetails");
System.out.println("Address : " + ud2.getAddress());
出力は次のようになります。
Address set by ud1
Address set by ud1
userDetails は singleton Bean であるため、2 回目の取得ud2
は ud1 と同じ結果になります。
今ここに私の問題があります:
私のWebアプリケーションには、次UserDetails
のBeanがありますdispatcher-servlet.xml.
<bean id="userDetails" class="com.mukund.DTO.UserDetails" />
最初の質問:シングルトン スコープは Web アプリケーションのデフォルトでもありますか?
IF YES:
この Bean は、AccountService
およびCustomerService
クラスに自動配線されます。
クライアントが、CustomerService クラスでユーザーの名を「UserA」clientA
に設定し、しばらくしてから AccountService クラスから名を取得したと言う場合、
2 番目の質問:最初の名前として「UserA」を持つ UserDetailsの同じインスタンスを取得しますか?
3 番目の質問:その間、別のクライアントclientB
が AccountService クラスで最初の名前を取得しようとすると、"UserA" を取得しますか?
4 番目の質問:同じ UserDetails インスタンスが clientA、clientB などで共有されますか? はいの場合: プロトタイプ、リクエスト、またはセッションを選択するスコープ。
私の言いたいことを理解していただければ幸いです。Web アプリケーションに関して、Spring Bean のスコープについて説明してください。
ありがとう