Wicket: шаблон для определения глобальных свойств приложения - PullRequest
3 голосов
/ 16 июля 2011

У меня есть несколько свойств, связанных с конфигурацией моего приложения, которые я хотел бы поместить в один файл для централизации конфигурации. Источник этого приложения будет использоваться и изменяться другими, поэтому я стараюсь максимально упростить его, предоставив одну точку конфигурации.

Я знаю, как использовать MyComponentName.properties файлы для настройки сообщений об ошибках компонентов, L10N и т. Д. Но я пытаюсь предоставить конфигурацию для вещей, которые обычно не отображают строки. Некоторые примеры:

  • имя хоста почтового сервера
  • какую аутентификацию пользователя использовать
  • идентификатор приложения Facebook

Мой Application.java будет загружать эти свойства из global.properties (или чего-либо еще) и передавать соответствующие конфигурации моим отдельным классам во время инициализации. Я, конечно, могу загрузить файл вручную, но мне интересно, не существует ли какой-либо поддержки для этого в Wicket.

Было бы лучше поместить их в web.xml?

1 Ответ

2 голосов
/ 16 июля 2011

Я использовал два подхода.

Первый подход, используя web.xml с параметрами инициализации приложения калитки:

  <filter>
    <filter-name>WicketApp</filter-name>
    <filter-class>
      org.apache.wicket.protocol.http.WicketFilter
    </filter-class>
    <init-param>
      <param-name>applicationFactoryClassName</param-name>
      <param-value>
        org.apache.wicket.spring.SpringWebApplicationFactory
      </param-value>
    </init-param>
    <init-param>
      <param-name>param1</param-name>
      <param-value>xxx.xxx.xxx.xxx</param-value>
    </init-param>
    <init-param>
      <param-name>param2</param-name>
      <param-value>Hello</param-value>
    </init-param>
  </filter>
  <filter-mapping>
    <filter-name>WicketApp</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

Вы можете получить к ним доступ, используя:

MyApplication.get().getInitParameter("param1")

Второй подход: если вы используете Spring, вы можете использовать applicationContext.xml для параметризации ваших bean-компонентов:

<bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
    <property name="host" value="mail.xxx.com"/>
    <property name="javaMailProperties">
        <props>
            <prop key="mail.smtp.sendpartial">true</prop>
        </props>
    </property>
</bean>
...