2

アクション クラスはリクエストごとにインスタンス化されるため、アクション クラスのインスタンス変数はスレッド セーフであることを理解しています。しかし、アクション クラスを拡張する必要があり、スレッド セーフが心配です。

たとえば、いくつかの共通の属性と、いくつかのアクション クラス間でそれらの属性を処理するいくつかのメソッドがあるとします。私はそれらを単一のアクションクラスに入れ、それを拡張することを好みActionSupportます. そして、すべてのアクション クラスは、先ほど作成したベース アクション クラスを拡張します。私の質問は、基本アクション クラスのインスタンス変数はスレッド セーフですか? S2 は基本アクション クラスをまったく管理しますか?

また、アクション クラスを、S2 によって管理され、リクエストごとにインスタンス化されるアクション クラスにする理由は何ですか? struts.xml?で宣言される ActionSupportクラス延長?

4

2 に答える 2

2

また、アクション クラスを、S2 によって管理され、リクエストごとにインスタンス化されるアクション クラスにする理由は何ですか? struts.xml で宣言されていますか? ActionSupport クラスを拡張しますか?

で宣言されるstruts.xml:はい、それはJavaクラスをアクションに変えるということです。

また、すべての Action クラスは ThreadLocal であるため、拡張や実装に関係なく、スレッドセーフです。すべてのユーザーのすべてのリクエストには、各 Action クラスの独自のコピーがあります。

PS: 他のクラス (で宣言されstruts.xmlていない) は、「(アクション クラス) S2 によって管理されておらず、リクエストごとにインスタンス化されていません」ではなく、単純にアクションではありません。

于 2013-05-16T13:51:40.983 に答える