Я работаю с 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, игнорируя другие файлы"!)
Спасибо заранее,
Тим