Две Spring RequestContextFilter и аннотации @Component - PullRequest
0 голосов
/ 04 августа 2011

У меня есть два класса фильтров, начиная с org.springframework.web.filter.RequestContextFilter, оба настроены в web.xml одинаково, оба используют аннотацию @ComponentКогда у меня был только один, все работало правильно.Когда я добавил второй, он не был зарегистрирован.

Почему?Как я могу решить это?Мне нужны два фильтра?

1 Ответ

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

Поскольку Spring @Component основан на классе, а не на имени, второй фильтр не загружается, потому что он затеняется первым. Тот факт, что два класса реализации различны, не имеет значения, потому что Spring ищет что-то расширяющее Filter.

Решение состоит в том, чтобы использовать квалификатор для каждого @Component (например, @Component(value = "MyFilter1")) и объявить в web.xml имя фильтра в качестве квалификатора (например, <filter><filter-name>MyFilter</filter-name>...</filter>.

).

Не забудьте использовать org.springframework.web.filter.DelegatingFilterProxy и объявить сопоставление фильтров.

Да - это странно, но я сразу отвечаю на свой вопрос. Я начал писать это после нескольких часов поиска, а затем у меня появилась идея. Я проверил это, и оно работает - но у кого-то другого нет причин искать его снова несколько часов.

...