Add a Servlet Filter in a Spring Boot application

前端 未结 2 1390
清酒与你
清酒与你 2020-12-01 11:57

I\'d like to have ETag suport. For this purpose there is a ShallowEtagHeaderFilter which does all the work. How can I add it without declaring it in my we

2条回答
  •  遥遥无期
    2020-12-01 12:51

    A bit late answer.

    My solution was to create custom annotation:

    import org.springframework.core.annotation.AliasFor;
    import org.springframework.stereotype.Component;
    
    // ...
    
    @Retention(RetentionPolicy.RUNTIME)
    @Target(ElementType.TYPE)
    @Component
    public @interface Filter {
    
        @AliasFor(annotation = Component.class, attribute = "value")
        String value() default "";
    
    }
    

    And then simply apply it to the filter implementations:

    @Filter
    public class CustomFilter extends AbstractRequestLoggingFilter {
    
        @Override
        protected void beforeRequest(HttpServletRequest request, String message) {
            logger.debug("before req params:", request.getParameterMap());
        }
    
        @Override
        protected void afterRequest(HttpServletRequest request, String message) {
            logger.debug("after req params:", request.getParameterMap());
        }
    }
    

    See more: @AliasFor, Spring custom annotations question

提交回复
热议问题