Spring MVC Java Config (конфигурация с аннотациями) для web.xml

Пример преобразования дескриптора развертывания web.xml в конфигурацию Spring MVC Java Config (конфигурация с аннотациями).

Обзор приложения Spring MVC + AngularJS + Bootstrap + HTML5
Используемые технологии и библиотеки
  • Spring MVC 4.2.4.Release

1. Описание задачи

Преобразовать дескриптор развертывания web.xml в программную конфигурацию с помощью Java config (POJO класс).

2. Структура проекта

javaConfigStructure

Чтобы поменять xml конфигурации (web.xmlsecurity-config.xmlmvc-config.xmlapplication-context.xml) на вариант Java Config с использованием классов и аннотаций был добавлен пакет javaconfig. В нем содержаться классы, соответствующие xml конфигурации, которые были использованы на протяжении цикла статей этого проекта. WebConfig является аналогом web.xmlApplicationConfig = application-context.xmlMVCConfigmvc-config.xmlSpringSecurityInit и SecurityConfig являются аналогом security-config.xml.

3. Важное замечание

Это первая часть из нескольких статей по переходу от xml конфигурации к Java конфгурации. Поэтому просто убрав web.xml и заменив на аналог WebConfig из этой статьи работать приложение у вас не будет. Используйте полную конфигурацию из скачанного проекта или используйте эту статью как справочную информацию по сопоставлению элементов из xml файла с java конфигурацией.

4. web.xml

Т.к. все настройки были описаны в предыдущих статьях, то здесь будет минимум описаний каждого элемента. Код можно легко сравнить сопоставляя названия xml и java класса.

web.xml:

5. WebConfig

Аналог web.xml в конфгурации Java выглядит так.

Сопоставить одно с другим достаточно легко, но разобьем обе конфигурации на части.

Инициализация корневого контекста и добавление в него двух конфигурационных файлов.

и

Регистрация диспетчера сервлетов и mvc конфигурации.

аналог в java:

Добавление фильтра кодирования символов.

encodingFilter в java config:

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

Здесь регистрируется класс с конфигурацией Spring Security. Но  если оставить только этот код, то мы будем получать ошибки при загрузке (или компиляции) приложения. Например для этого приложения сразу будет падать на @Autowired DataSource. Дело в том, что конфигурация spring security должна быть загружена в тот же контекст, который мы создаем в методе onStartup(). Это делается с помощью метода getRootConfigClasses().

 

На этом преобразования web.xml в java конфигурацию закончены. Читайте следующие статьи для изучения преобразования других конфигурационных xml файлов Spring.

Следующие части перехода с xml на Java конфигурацию

Spring MVC Java Config (конфигурация с аннотациями) для mvc-config.xml

Spring MVC Java Config (конфигурация с аннотациями) для Spring Security (security-config.xml)

Spring MVC Java Config (конфигурация с аннотациями) для application-context.xml

 

Исходный код

23. Annotations config — проект в IDEA

Share Button
10
23722 Total Views 2 Views Today

7 thoughts on “Spring MVC Java Config (конфигурация с аннотациями) для web.xml

  1. Grisha:

    Добрый день!

    А если мы SecurityConfig.class добавим в onStartup: То нам не нужно наследоваться от

    То нам не нужно наследоваться от

    ???

    1. Не совсем понял вопроса. SecurityConfig и AbstractAnnotationConfigDispatcherServletInitializer это два совершенно независимых класса. Настройки SecurityConfig относятся только к Spring Security и их вообще можно не грузить, а наследоваться от второго класса нужно обязательно (есть еще варианты, но здесь использован этот класс).

  2. Grisha:

    У меня вот так работает :

     

    Зачем тогда нужен onStartup?

  3. Илья:

    Не понимаю как быть с <welcomefile>. Почему в web.xml он закомменчен и что вместо него писать в JavaConfig?

    1. Ничего не нужно писать, т.к. стартовая страница тянется из настроек спринга

      <mvc:viewcontroller path=«/» viewname=«/index»/>

      При старте сервера приложений по умолчанию для Tomcat откроется по / и следовательно перейдет на index.html. Поэтому в web.xml этот участок закомментирован, а в java конфиг вообще не прописывается.
      Еще нужно учитывать подключенный Spring Security — при переходе на закрытую страницу перекинет на авторизацию.

  4. Serduko:

    У меня не видит метода

  5. DooM:

    Разве так не проще http://www.ibm.com/developerworks/ru/library/ws-springjava/

Добавить комментарий