Я вижу это в своем приложении Spring MVC web.xml:
<filter>
<filter-name>springSecurityFilterChain</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
Я пытаюсь выяснить, почему он существует и нужен ли он на самом деле.
Я нашел это объяснение в документации Spring, но это не помогло мне разобраться в этом:
Кажется, предполагается, что этот компонент является "связующим звеном" между сервлетами, определенными в web.xml, и компонентами, определенными в Spring applicationContext.xml.
7.1 DelegatingFilterProxy
При использовании фильтров сервлетов вам, очевидно, необходимо объявить их в
web.xml, иначе они будут игнорироваться контейнером сервлетов. В Spring Security классы фильтров также являются компонентами Spring, определенными в контексте приложения, и, таким образом, могут использовать все преимущества Spring-средств для внедрения зависимостей и интерфейсов жизненного цикла. SpringDelegatingFilterProxyобеспечивает связь междуweb.xmlи контекстом приложения.При использовании DelegatingFilterProxy вы увидите нечто подобное в файле
web.xml:<filter> <filter-name>myFilter</filter-name> <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class> </filter> <filter-mapping> <filter-name>myFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>Обратите внимание, что фильтр на самом деле является
DelegatingFilterProxy, а не классом, который фактически реализует логику фильтра.DelegatingFilterProxyвыполняет делегирование методов Filter через bean-компонент, который получается из контекста приложения Spring. Это позволяет компоненту воспользоваться поддержкой жизненного цикла контекста веб-приложения Spring и гибкостью настройки. Бин должен реализовыватьjavax.servlet.Filter, и у него должно быть то же имя, что и в элементе имени фильтра. Прочитайте Javadoc для DelegatingFilterProxy для получения дополнительной информации
Итак, если я возьму это из моего web.xml, что произойдет? Мои сервлеты не смогут связаться с контейнером Spring? **