То, как вы его сейчас запрограммировали - testMap будет создаваться заново при каждом вызове метода getMap (). Я не уверен, что вы подразумеваете под "если вызывается класс действия" - если в вашем классе вызывается метод getMap (), тогда да - если вызывается какой-то другой метод, который каким-то образом не вызывает getMap () , тогда нет.
Должен ли я загрузить карту как статическую? Каковы преимущества загрузки этой статической карты? Если я собираюсь вызвать этот класс Action 100 раз, эта карта была бы загружена только один раз?
Если сделать карту ссылкой статической, она будет существовать один раз на уровне класса. Вы также можете статически загрузить карту, и это произойдет только один раз. Это действительно должно быть сделано только в том случае, если вы не собираетесь изменять содержимое карты, так как вы можете столкнуться с проблемами многопоточности или решить, когда очищать карту, если к ней постоянно добавляются данные, но они никогда не удаляются. и т. д.
Также не каждый раз при вызове класса действий я могу получить доступ к этой карте. Если я вызываю этот класс действий 100 раз, то только 40 раз может возникнуть необходимость доступа к этой карте.
Если вы беспокоитесь, что вам, возможно, никогда не понадобится Карта, вы можете захотеть посмотреть ленивую загрузку - сделать карту статической ссылкой, но всегда получать к ней доступ через статический метод, который проверяет, была ли Карта еще создана - в противном случае он создается в первый раз, когда это необходимо, а не при запуске. Хотя в этом случае это, вероятно, не имеет значения.
Я должен определить эту карту внутри класса действий
Я думаю, что это скорее предположение, а не требование - поскольку это веб-приложение, лучшим решением может быть включение карты в область приложения при запуске - почти как статическое, только оно не привязано к классу .
Вы можете добавить ServletContextListener для прослушивания запуска и остановки вашего веб-приложения, а также добавить область Map to Application, вызвав
servletContext.setAttribute("mapKey", testMap)
Тогда в вашем действии (или в любом другом месте вашего веб-приложения) вы можете позвонить
servletContent.getAttribute("mapKey")
и получите доступ к своей карте.