How to register a filter for only one @RequestMapping method?

I registered the following filter for general content logging:

@Bean
public Filter getLoggingFilter() {
    CommonsRequestLoggingFilter filter = new CommonsRequestLoggingFilter();
    filter.setIncludeQueryString(true);
    filter.setIncludePayload(true);
    filter.setMaxPayloadLength(5120);
    return filter;
}

This filter gets on any request.

Now I would like to apply this filter to only one specific method @RequestMapping.

Question: is this possible at all?

Update : the following file filter results in 404 when accessing the path.

@Bean
public FilterRegistrationBean getLoggingFilter() {
    FilterRegistrationBean filter = new FilterRegistrationBean(new CommonsRequestLoggingFilter());
    filter.addUrlPatterns("/rest/my/specific/method/*");
    return filter;
}
+4
source share
1 answer

You need FilterRegistrationBeanto specify URL mappings. This fact is also mentioned in the reference guide .

@Bean
public Filter loggingFilter() {
    CommonsRequestLoggingFilter filter = new CommonsRequestLoggingFilter();
    filter.setIncludeQueryString(true);
    filter.setIncludePayload(true);
    filter.setMaxPayloadLength(5120);
    return filter;
}

Next to the filter definition add FilterRegistrationBean.

@Bean
public FilterRegistrationBean loggingFilterRegistration() {
    FilterRegistrationBean registration = new FilterRegistrationBean(loggingFilter());
    registration.addUrlPatterns("/rest/my/specific/method/*");
    return registration;
}

URL. , UrlPatterns URL. , /rest, .

+6

Source: https://habr.com/ru/post/1627269/


All Articles