Я бачу це у своєму весняному додатку MVC web.xml
:
<filter>
<filter-name>springSecurityFilterChain</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
Я намагаюся розібратися, чому це там і чи потрібно насправді.
Я знайшов це пояснення у весняних документах, але це не допомагає мені зрозуміти це:
Здається, це дозволяє припустити, що цей компонент є "клеєм" між сервлетами, визначеними в, web.xml
та компонентами, визначеними навесні applicationContext.xml
.
7.1 Делегування фільтраПрокси
Використовуючи фільтри сервлетів, вам, очевидно, потрібно оголосити їх у своєму
web.xml
, інакше контейнер сервлетів буде ігнорований. У Spring Security класами фільтрів також є "Весняні боби", визначені в контексті програми, і тому вони можуть скористатися багатими можливостями введення залежностей Spring і інтерфейсами життєвого циклу. Spring'sDelegatingFilterProxy
забезпечує зв'язок між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. Це дає можливість квасолі скористатись підтримкою життєвого циклу контексту Веб-програми та гнучкістю конфігурації. Бін повинен реалізовувати,javax.servlet.Filter
і він повинен мати те саме ім'я, що і в елементі імені фільтра. Прочитайте Javadoc для DelegatingFilterProxy для отримання додаткової інформації
Отже, якщо я вийму це зі свого web.xml
, що буде? Мої сервлети не зможуть спілкуватися з контейнером Spring? **