Существует три способа добавить ваш фильтр:
@Component
@Bean
с помощью Filter
в пружине @Configuration
@Bean
с FilterRegistrationBean
в Spring @Configuration
Либо # 1, либо 2 будут делать, если вы хотите, чтобы ваш фильтр применялся ко всем запросам без настройки, в противном случае используйте # 3. Вам не нужно указывать проверку компонента для # 1 для работы до тех пор, пока вы помещаете свой класс фильтра в тот же или подпакет вашего класса SpringApplication
. Для # 3 использование вместе с # 2 необходимо только тогда, когда вы хотите, чтобы Spring управлял вашим классом фильтра, например, он имел автозависимые связи. Он отлично подходит для меня, чтобы создать новый фильтр, который не нуждается в автоподготовке / инъекции зависимости.
Хотя сочетание # 2 и # 3 отлично работает, я был удивлен, что в итоге два фильтра не применяются дважды. Я предполагаю, что Spring объединяет два компонента как один, когда он вызывает тот же метод для создания обоих. Если вы хотите использовать № 3 только с автооговором, вы можете AutowireCapableBeanFactory
. Ниже приведен пример
private @Autowired AutowireCapableBeanFactory beanFactory;
@Bean
public FilterRegistrationBean myFilter() {
FilterRegistrationBean registration = new FilterRegistrationBean();
Filter myFilter = new MyFilter();
beanFactory.autowireBean(myFilter);
registration.setFilter(myFilter);
registration.addUrlPatterns("/myfilterpath/*");
return registration;
}
Это известная ошибка в chrome, которая еще не исправлена, chrome не отображает XML-каналы RSS с каким-либо форматированием.
Обновление: теперь есть расширение для подписки / чтения RSS для Chrome.
Суть в том, что поддержка RSS не используется «большинством» пользователей, и пока что они реализуют ее только как расширение. Расширение доступно здесь: RSS SubscriptionExtension
Подробное обсуждение этого вопроса в заключительном комментарии к ошибке - вы можете прочитать заметки разработчика здесь: Комментарий 149
Попробуйте изменить заголовок на text/xml
и посмотрите, поможет ли он:
header("Content-Type: text/xml; charset=ISO-8859-1");