Я хочу вызвать метод в объекте Filter
после его добавления в соответствии с определением web.xml
. Все, что у меня есть, - это объект WebApplicationContext
(пусть его называют: wac
).
Я могу добавить новые объекты фильтра через: wac.getServletContext().addFilter("otherfilter", otherFilter);
Кроме того, я могу успешно проверить его существование через: wac.getServletContext().getFilterRegistration("myfilter")
Но как я могу получить доступ (и, возможно, изменить) объекты Filter
которые были добавлены ранее?
Я не уверен, как это сделать так, как вы хотите, но эта проблема обычно решается с использованием другого подхода.
Вы можете объявить свой Filter
как bean-компонент в контексте вашего приложения, а затем зарегистрировать DelegatingFilterProxy
в web.xml
чтобы делегировать фильтрацию в ваш фильтр.
В этом случае ваш фильтр будет регулярным компонентом Spring, и вы сможете получить к нему доступ, как и любой другой компонент.
API-интерфейс Servlet не предоставляет никакого механизма для прямого доступа к экземпляру Filter
когда он был добавлен в ServletContext
. Лучшее, что вы собираетесь получить с API Servlet, - это интерфейс FilterRegistration
вы уже нашли, который позволяет вам изменять один и тот же набор параметров конфигурации, как вы можете, через web.xml.
В зависимости от того, что вы хотите сделать, вы можете запрограммировать свой путь вокруг этой проблемы, используя параметры init, но это никогда не будет особенно чистым решением. Я бы пошел с решением DelegatingFilterProxy
предложенным axtavt.