Search code examples
javaspringspring-bootjax-rscxf

Register Filter in CXF Spring Boot


How can I register ContainerResponseFilter/ContainerRequestFilter in CXF? Like Jersey's ResourceConfig.

@Provider
@Priority(value = 2)
public class CorsResponseFilter implements ContainerResponseFilter {

    @Override
    public void filter(ContainerRequestContext requestContext, ContainerResponseContext responseContext)
            throws IOException {

        System.out.println("filtered");
    }

}

Solution

  • If you've enabled cxf be adding property cxf.jaxrs.component-scan=true then you Both resources and providers should be part of application context. Hence annotate with @Service or @Component.

    @Component
    @Provider
    @Priority(value = 2)
    public class CorsResponseFilter implements ContainerResponseFilter {
    
        @Override
        public void filter(ContainerRequestContext requestContext, ContainerResponseContext responseContext)
                throws IOException {
    
            System.out.println("filtered");
        }
    
    }
    

    If you are enabling using classes scan make sure provider is part of packages you have given.

    cxf.jaxrs.classes-scan=true
    cxf.jaxrs.classes-scan-packages=yourpackage where provider is present.