Подтвердить что ты не робот

Варианты использования для @WebInitParam

Поскольку спецификация Servlet 3.0 позволяет объявить метаданные метаданных сервлета как аннотацию в классе сервлета:

@WebServlet(name="appInfoServlet", urlPatterns ="/appInfo", initParams = @WebInitParam(name="ocwd.deployer.email", value="[email protected]"))
public class AppInfoServlet extends HttpServlet {

}

То, что я не понимаю, является прецедентом для хранения параметров init в том же классе, что и сервлет. Насколько я понимаю, эти параметры должны храниться отдельно от класса и помещаться в дескриптор развертывания.

Какие существуют случаи для указания параметров init в аннотации @WebServlet?

4b9b3361

Ответ 1

Аннотации используются для указания значений по умолчанию.

В JavaEE свойства развертывания также могут быть предоставлены с помощью аннотаций. Учитывая значения аннотаций, дескриптор развертывания i.e, web.xml все еще можно использовать для переопределения значений по умолчанию, предоставленных аннотациями.


В приведенном выше примере init-param можно переопределить, настроив servlet с соответствующим именем в web.xml:

  <servlet>
    <servlet-name>appInfoServlet</servlet-name>
    <init-param>
        <param-name>ocwd.deployer.email</param-name>
        <param-value>[email protected]</param-value>
    </init-param>
  </servlet>

Ответ 2

Я могу подумать об одном, с моей головы: предоставить значение по умолчанию (т.е. дизайнером класса).

Если пользователь этого класса отлично со значением по умолчанию, ему не нужно ничего добавлять и просто использует. Если нет - он может изменить его с помощью DD.

Ответ 3

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

Вы можете сказать то же самое о аннотациях JAXB. Действительно, вы можете реализовать один класс и использовать несколько стратегий его сопоставления с XML. Но как только вы переходите к аннотации, вы создаете плотную связь между классом и метаданными. То же самое имеет значение для аннотаций Spring. И т.д.

На практике мы редко развертываем один и тот же сервлет дважды с использованием другой конфигурации или используете один и тот же EJB дважды или класс карты для разных схем XML. Но в этом случае очень удобно хранить метаданные вместе с кодом. Эта проблема решается в java с аннотациями.

Нижняя строка: используйте это определение в конкретном приложении, где каждый сервлет имеет определенную функциональность и роль и по определению не может многократно использоваться и тесно связан с его сопоставлением и конфигурацией URL. Не используйте это, если вы создаете среду, такую ​​как Struts или контроллер Spring. В этом случае программист-программист должен иметь возможность настроить сервлет.