Я вижу это в своем приложении 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 ДелегированиеFilterProxy
При использовании фильтров сервлетов вам, очевидно, нужно объявить их в вашем
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делает, так это делегировать методы фильтра бину, который получается из контекста приложения Spring. Это позволяет компоненту использовать преимущества поддержки жизненного цикла контекста веб-приложения Spring и гибкости конфигурации. Компонент должен быть реализован,javax.servlet.Filterи у него должно быть то же имя, что и в элементе filter-name. Прочтите Javadoc для DelegatingFilterProxy для получения дополнительной информации.
Итак, если я вытащу это из своего web.xml, что будет? Мои сервлеты не смогут взаимодействовать с контейнером Spring? **