добавить пользовательский класс фильтра в applicationcontext.xml - PullRequest
1 голос
/ 01 августа 2011

мое приложение использует Spring applicationContext.xml.У меня есть собственный класс фильтра (CustomFilter реализует фильтр), который я хочу использовать в моем приложении.Правильный ли способ сделать это - создать <bean... регистрацию внутри applicationContext.xml?или просто положить внутри web.xml?Я хочу положить внутрь applicationContext.xml.но я не знаю, как указать «путь», который будет запускать этот фильтр.пример myapp/testcustomfilter запустит этот фильтр.

Ответы [ 3 ]

1 голос
/ 01 августа 2011

Ваш класс фильтра может находиться в applicationContext.xml и рассматриваться как любой другой компонент Spring. Однако вам нужно что-то добавить в web.xml, чтобы позволить серверному контейнеру справиться с этим.

Здесь приходит Spring DelegatingFilterProxy. Из javadoc :

Прокси для стандартного фильтра Servlet 2.3, делегирующего bean-объекту, управляемому Spring, который реализует интерфейс Filter. Поддерживает init-param фильтра «targetBeanName» в web.xml, указывая имя целевого компонента в контексте приложения Spring.

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

Этот подход особенно полезен для реализации Filter со сложными потребностями в настройке, позволяя применять механизм определения полного Spring-компонента к экземплярам Filter.

Самая простая настройка - определить фильтр DelegatingFilterProxy в web.xml с тем же именем, что и компонент фильтра в applicationContext.xml. DelegatingFilterProxy позаботится об остальном.

1 голос
/ 02 августа 2011

Просто регистрация вашего Filter в web.xml работает просто отлично. У нас есть смесь фильтров, отличных от Spring и Spring, в нашем приложении (фильтры, отличные от Spring, являются устаревшим кодом), и все они прекрасно работают вместе. Это также облегчает обслуживание, потому что вам нужно только посмотреть в одном месте, чтобы увидеть, как все объединяется, потому что по определению порядок в web.xml является порядком выполнения.

1 голос
/ 01 августа 2011

FilterToBeanProxy запрос прокси класса для пружинных управляемых бинов. Вы должны определить этот фильтр в своем файле web.xml и указать параметр targetBean на свой управляемый компонент. Также проверьте FilterChainProxy , чтобы определить цепочку фильтров.

...