Spring和Jersey过滤器 - 提供者还是组件?

时间:2015-08-16 23:51:06

标签: java spring jersey spring-boot jax-rs

我正在尝试确定弹簧靴,平针织物以及球衣和弹簧靴的背景如何相互关联。

Aws::Credentials

当我将它标记为@Provider并让泽西看到它所在的包装时,它找不到它。它在我成为@Component时有效。

@Component
public class CORSFilter implements Filter {


    public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
        HttpServletResponse response = (HttpServletResponse) res;
        response.setHeader("Access-Control-Allow-Origin", "*");
        response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
        response.setHeader("Access-Control-Max-Age", "3600");
        response.setHeader("Access-Control-Allow-Headers", "x-requested-with");
        chain.doFilter(req, res);
    }

    public void init(FilterConfig filterConfig) {
    }

    public void destroy() {
    }


}

@Configuration注释是否使JerseyContext成为一个spring bean?然后spring注入CORSFilter,因为它找到了Filter类型的组件?这里发生了什么?

1 个答案:

答案 0 :(得分:1)

您正在实现servlet过滤器(实现Filter),这意味着servlet容器正在实例化过滤器。当您提供@component注释时,仍然是初始化此过滤器的servlet容器。它只有春天上下文才能使用contextloader监听器来识别它。

在球衣中,您的过滤器应该实现ContainerRequestFilterContainerResponseFilter,以便将球衣配置应用于URL路径等过滤器。 由于您使用了servlet过滤器,因此应手动配置它。