Для обозначения фильтра сервлета нет специальной аннотации. Вы просто объявляете @Bean
типа Filter
(или FilterRegistrationBean
). Пример (добавление настраиваемого заголовка ко всем ответам) находится в собственном Boot EndpointWebMvcAutoConfiguration ;
Если вы только объявляете Filter
, он будет применяться ко всем запросам. Если вы также добавили FilterRegistrationBean
, вы можете дополнительно указать отдельные сервлеты и шаблоны url для применения.
Примечание:
Начиная с Spring Boot 1.4, FilterRegistrationBean
не устарел и просто переместил пакеты с org.springframework.boot.context.embedded.FilterRegistrationBean
на org.springframework.boot.web.servlet.FilterRegistrationBean
Шаблоны являются очень мощным механизмом, который может упростить много вещей. Однако для использования их правильно требует большого количества времени и опыта - для решения, когда их использование является соответствующим.
Для меня самые важные преимущества:
for
и for_each
) parallel_for
и другой STL как алгоритмы и контейнеры) Оборотные стороны:
export
поддержка (отсутствие) я настоятельно рекомендую следующие книги:
На положительной стороне, шаблонах C++:
Допускают обобщение Уменьшения типа
объем избыточного кода, Вы должны к Справке типа
создать безопасный с точки зрения типов код
, оценены во время компиляции
, Может увеличить производительность (как альтернатива полиморфизму)
Справка для создания очень мощных библиотек
На отрицательной стороне:
Может быть сложным быстро, если Вы не осторожны
, Большинство компиляторов дает загадочные сообщения об ошибках
, может быть трудно использовать/отлаживать высоко шаблонный код
, Имеют по крайней мере одну синтаксическую причуду (>>, оператор может вмешаться в шаблоны)
, Справка делает C++ очень трудным проанализировать
, В целом, внимательное рассмотрение должно использоваться относительно того, когда использовать шаблоны.
Положительные стороны: мощный; позволяет Вам:
Отрицательные стороны: мощный; позволяет Вам:
Шаблоны значительно увеличивают жизнеспособное пространство дизайна, которое является не обязательно плохой вещью, но оно действительно делает их что намного тяжелее использовать хорошо. Шаблону кода нужен maintainters, кто понимает не только функции языка, но и последствия дизайна функций языка; в сущности это означает, что много групп разработчиков избегают всех кроме самых простых и наиболее узаконенных приложений шаблонов C++.
В целом, шаблоны делают язык намного более сложным (и трудный реализовать правильно!). Шаблоны не были намеренно разработаны для Тьюринга, но они так или иначе - таким образом, даже при том, что они могут сделать примерно, что-либо, с помощью них может оказаться большей проблемой, чем это стоит.
Шаблоны должны использоваться экономно.
"Ужасный для отладки" и "трудно для чтения" не большие аргументы против хорошего шаблонного использования с хорошими абстракциями.
Лучшие отрицательные аргументы пошли бы к тому, что STL имеет много "глюков", и использующие шаблоны в целях, которые уже покрывает STL, изобретают велосипед. Шаблоны также увеличивают время ссылки, которое может быть беспокойством о некоторых проектах, и иметь много особенностей в их синтаксисе, который может быть тайным людям.
, Но положительные стороны с повторным использованием общего кода, введите черты, отражение, интеллектуальные указатели, и даже метапрограммы часто перевешивают отрицательные стороны. Вещь, в которой необходимо быть уверены, состоит в том, что шаблоны всегда используются тщательно и экономно . Они не лучшее решение в каждом случае и часто даже второе или третье лучшее решение.
Вам нужны люди с достаточным опытом, пишущий им, что они могут избежать всех ловушек и иметь хороший радар для того, когда шаблоны усложнят вещи больше, чем помощь.
Я не вижу, как их трудно считать. Что нечитабельно приблизительно
vector <string> names;
, например? Чем Вы заменили бы его?
Один из недостатков, которые я не видел упомянутый еще, является тонкими семантическими различиями между регулярными классами и инстанцированиями шаблонов классов. Я могу думать:
typedef
имена типов редактора в типах предка не наследованы шаблонными классами. typename
и template
ключевые слова в соответствующих местах. virtual
. Эти вещи могут обычно преодолеваться, но они - боль.
Преимущество: Могут быть созданы универсальные Типы данных.
Недостаток: Код, Чрезмерно увеличивающийся в размерах
Повторно используемый код сделан с шаблоном. Его приложение соответствует профилю каждого.