В чем смысл DelegatingFilterProxy Spring MVC?

Я вижу это в web.xml моего приложения Spring MVC:


    springSecurityFilterChain
    org.springframework.web.filter.DelegatingFilterProxy

Я пытаюсь чтобы выяснить, зачем он там и нужен ли он на самом деле.

Я нашел это объяснение в документации Spring , но оно не помогает мне разобраться в нем:

Кажется, предполагается, что это Компонент - это «клей» между сервлетами, определенными в web.xml , и компонентами, определенными в Spring applicationContext.xml .

7.1 DelegatingFilterProxy

При использовании фильтров сервлетов, вам, очевидно, нужно дек поместите их в свой web.xml , иначе они будут проигнорированы контейнером сервлета. В Spring Security классы фильтров также являются компонентами Spring, определенными в контексте приложения и, таким образом, могут использовать преимущества богатых возможностей Spring для внедрения зависимостей и интерфейсов жизненного цикла. DelegatingFilterProxy Spring обеспечивает связь между web.xml и контекстом приложения.

При использовании DelegatingFilterProxy вы увидите что-то подобное в web.xml файл:

 
   myFilter  org.springframework.web.filter.DelegatingFilterProxy  myFilter  / * 

Обратите внимание, что фильтр на самом деле является DelegatingFilterProxy , а не классом, который фактически реализует логику фильтра. Что делает DelegatingFilterProxy , так это делегирует методы фильтра компоненту, который получается из контекста приложения Spring. Это позволяет компоненту использовать преимущества поддержки жизненного цикла контекста веб-приложения Spring и гибкости конфигурации. Компонент должен реализовывать javax.servlet.Filter и иметь то же имя, что и в элементе filter-name. Прочтите Javadoc для DelegatingFilterProxy для получения дополнительной информации

Итак, если я возьму это из моего web.xml , что произойдет? Мои сервлеты не смогут взаимодействовать с контейнером Spring? **

116
задан PraveenKumar Lalasangi 20 September 2019 в 10:57
поделиться