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

Разница между web.xml, beans.xml, applicationContext.xml и т.д.

Я работаю с Spring MVC, а теперь создаю свои проекты в Netbeans, работающие на серверах Glassfish. В то время как все работает нормально, я чувствую, что мне не хватает понимания того, что должно быть в каждом из файлов XML, - и в некоторых случаях это привело к тому, что я просто пробовал кусок XML в каждом файле один за другим, пока он не будет работать.

Я не смог найти четкое описание этого в Google, и я пробовал несколько раз.

Я подробно расскажу о моем нынешнем понимании здесь, а затем, если кто-нибудь сможет проследить более подробное объяснение или сообщить мне, где я ошибаюсь, что было бы очень оценено.

web.xml

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

<filter>
  <filter-name>springSecurityFilterChain</filter-name>
  <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>

<filter-mapping>
  <filter-name>springSecurityFilterChain</filter-name>
  <url-pattern>/*</url-pattern>
</filter-mapping>

Вы добавляете, что в web.xml для получения Spring безопасности - но тогда вы фактически настраиваете Spring Безопасность в другом файле.

диспетчер-сервлет

Это похоже на web.xml, поскольку речь идет о настройке контейнера сервлета на включение Spring, но в моих проектах он в основном пуст и содержит только один viewResolver. Что нужно делать здесь и как оно отличается от web.xml?

beans.xml

В настоящий момент этот файл пуст, кроме корневого тега xml <beans> и нескольких определений пространства имен/схем во всех моих проектах. Действительно ли это необходимо для чего-либо?

Является ли bean-discovery-mode="annotated"> в корневом теге причиной, по которой он пуст?

ApplicationContext

Кажется, что все фактические конфигурации Spring такие, как <mvc:annotation-driven />, <context:component-scan /> и т.д.

Вы также можете разбить эту конфигурацию на несколько файлов и использовать <import /> для связывания этих файлов в контексте приложения.

GlassFish-сеть

Я в основном игнорировал этот файл, есть ли причина, по которой я не должен?

Вопросы

Так что действительно вопросы:

  • Что я пропустил из вышеперечисленного?
  • Почему существует отдельный beans.xml, который, кажется, ничего не делает? Является ли это наследием до того, как была введена аннотация?
  • Почему существуют как dispatcher-servlet.xml, так и web.xml и какая разница между ними?
  • Как Glassfish-web.xml отличается от двух?
  • Как узнать, должен ли фрагмент xml идти в какой из этих файлов, не пытаясь в них, пока он не будет работать? (В настоящее время я разработал приблизительное эмпирическое правило "spring config в applicationContext.xml, устанавливая компоненты Spring в web.xml, игнорируя другие файлы"!)

Спасибо заранее,

Тим

4b9b3361

Ответ 1

web.xml - это файл, который должен находиться во всех веб-приложениях J2EE. Его спецификация определяется спецификацией J2EE. Здесь вы настраиваете общее поведение своего приложения. Например, сервлеты, фильтры, политика безопасности и т.д.

диспетчер-сервлет - это специальный сервлет в рамках Spring MVC. Вы должны определить его сопоставление в web.xml, чтобы включить Spring в своем веб-приложении.

beans.xml - это файл, который используется для настройки некоторых настроек CDI. Например, bean-discovery-mode="annotated" означает, что только классы, аннотированные аннотацией объема CDI, будут рассматриваться как управляемые CDI beans.

applicationContext.xml здесь вы на самом деле правы. Это общее имя основного файла конфигурации Spring. Здесь вы можете установить много вещей, например, создать и проложить несколько Spring beans.

glassfish-web.xml обычно является расширением web.xml для сервера GlassFish. Это не всегда необходимо. Это необходимо, если вы хотите настроить некоторые настройки специально для сервера GlassFish. Например, если вы настроили часть безопасности в web.xml, вам необходимо сопоставить роли пользователей из web.xml в роли сферы GlassFish.

Надеюсь, что это поможет.