распорки 2 - где я должен установить глобальные переменные приложения? - PullRequest
1 голос
/ 28 апреля 2010

Я использую Struts 2, и я хотел бы прочитать некоторые пользовательские параметры (глобальные переменные), предпочтительно из web.xml или некоторого пользовательского файла ".properties" (т. Е. Не жестко закодированы в источниках Java). Эта проблема сводила меня с ума последние полчаса, так как я не могу найти ни одного разумного решения.

Каков наилучший способ сделать это? Мне странно, что это так трудно ...

всего наилучшего

Никола Монтеккио

Ответы [ 3 ]

1 голос
/ 28 апреля 2010

Есть несколько способов сделать это.

  • Константы могут быть установлены в struts.xml (http://struts.apache.org/2.x/docs/constant-configuration.html).
  • Если вы используете Spring вместе с Struts 2 вы должны быть в состоянии установить некоторые параметры в вашем applicationContext.xml.
  • Вы также можете рассмотреть возможность использования JNDI. свойства, в файле конфигурации специфичные для каждого сервера приложений развертывание (http://tomcat.apache.org/tomcat-5.5-doc/jndi-resources-howto.html)
0 голосов
/ 07 мая 2010

Я не знаю, работает ли это, но http://struts.apache.org/2.0.6/struts2-core/apidocs/com/opensymphony/xwork2/ActionContext.html#get%28java.lang.Object%29

ActionContext.getContext (). Get (...) может работать.

0 голосов
/ 28 апреля 2010

Сначала спросите себя: действительно ли эти константы имеют отношение к Struts2 или только к вашему приложению?

Если позже, это на самом деле не вопрос Struts2, и вы, не доверяете, не хотите связывать управление «константами» со Struts2 (или web.xml), они должны быть доступны из кода вашего приложения вне веб-приложения. (например, из некоторого кода тестирования).

Я понимаю, что вы плохо относитесь к "гаркодированию" констант в некоторых (скажем) Константах классе (со статическими конечными полями), но имейте в виду, что это может быть не такой уж плохой практикой - если они действительно константы, вряд ли будут изменены независимо от вашего Java-кода. Стоит подумать.

Если нет, вам может понадобиться некоторый класс ConstantsManager , который может быть одноэлементным объектом без сохранения состояния (или неким объектом 'Service'), который знает, как загрузить константы, например, из некоторого свойства файл в пути к классам. Как объекты вашего приложения (включая, возможно, некоторые действия Struts2) получают ссылку на этот экземпляр ConstantsManager? В самой простой (и самой грязной) реализации у вас будет реализация шаблона Singleton со статическим методом getInstance (). Более гибким и модным является способ DI / IOC , возможно, с некоторыми контейнерами бобов, как Spring; и Struts2 хорошо подходит для игры с , что . И если вы не знакомы с этими понятиями, они наверняка появятся в ближайшее время из-за проблем, схожих (но менее тривиальных) с доступом к некоторым константам.

...