私はStruts 1.1を使用しています(私を始められないでください)、アップグレードは現在オプションではありません。残念ながら、シングルトン・アクション・アプローチ全体が私たちを苛立たせ、インスタンス変数などを使うことができないので、アクションが複雑になります。すべての必要なオブジェクトをパラメータとしてすべてのメソッドに渡す必要があります。私はインスタンス変数を使用して好むので、私はこのように、アクションの実行方法からのリクエストごとにアクションの新しいインスタンスを作成したいと思います:アクションのexecute()メソッドから新しいStruts Actionインスタンスを作成する際に問題がありますか?
public ActionForward execute (ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
return (new SaveUserDataAction()).instanceExecute(mapping, form, request, response);
}
public ActionForward instanceExecute (ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
// all normal execute stuff goes here
}
これは正常に動作しますが、私は思ったんだけど、あなたの人々の場合このアプローチの問題を考えることができます。私はこれが余分なオブジェクトの作成のために余分なCPUサイクルを必要とすることを知っていますが、最近の知恵は、それぞれの要求に対して1トンのオブジェクト作成が行われ、もう1つは気づかれなくなります。可読性とメンテナンス性を向上させる価値はありません。さらに深刻な欠点がありますか?
また、このセミクラジーアプローチよりも簡単な方法がありますか?おそらくStrutsがサポートするアプローチですか?
Strutsアクションはシングルトンではありません。 –
Struts 1.1では、それらはシングルトンのように扱われます。つまり、同じインスタンスが異なるスレッドで使用されます。 – Vlad