現在のコーディング方法-getMap()メソッドが呼び出されるたびにtestMapが再作成されます。「アクションクラスが呼び出された場合」の意味がわかりません-クラスでgetMap()メソッドが呼び出された場合、はい-何らかの方法でgetMap()を呼び出さない他のメソッドが呼び出された場合、その後いいえ。
マップを静的としてロードする必要がありますか?このマップを静的にロードする利点は何ですか?このアクションクラスを100回呼び出す場合、このマップは1回だけロードされますか?
マップ参照を静的にすると、クラスレベルで1回存在します。マップを静的にロードすることもできます。これは1回だけ発生します。これは、実際には、マップの内容を変更しない場合にのみ実行する必要があります。これは、スレッドの問題が発生したり、マップにデータが常に追加されているが削除されていない場合に、マップを空にするタイミングを判断する必要があるためです。 、など。
また、アクションクラスを呼び出すたびにこのマップにアクセスできるわけではありません。このアクションクラスを100回呼び出すと、40回だけこのマップにアクセスする必要がある場合があります。
マップが必要ないことが心配な場合は、遅延読み込みを調べて、マップを静的参照にしますが、マップがまだ作成されているかどうかを確認する静的メソッドを介して常にアクセスすることをお勧めします。起動時ではなく、最初に必要になったときに作成されます。この場合、それはおそらく問題ではありませんが。
このマップをアクションクラス内で定義する必要があります
これは要件というよりも前提条件だと思います-これはWebアプリなので-より良い解決策は、起動時にMapをApplicationスコープに入れることです-静的とほとんど同じですが、クラスに関連付けられていないだけです。
ServletContextListenerを追加して、Webアプリの開始と停止をリッスンし、次を呼び出すことでMaptoApplicationスコープを追加できます。
servletContext.setAttribute("mapKey", testMap)
次に、アクション(またはWebアプリの他の場所)で電話をかけることができます
servletContent.getAttribute("mapKey")
マップにアクセスできます。