您现在的位置是:主页 > 数据库技术 > 数据库技术

Spring Cloud中如何实现Zuul过滤器

IDCBT2021-12-24服务器技术人已围观

简介这篇文章将为大家详细讲解有关Spring Cloud中如何实现Zuul过滤器,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。 Zuul过滤器过滤器优先级 Spr

这篇文章将为大家详细讲解有关Spring Cloud中如何实现Zuul过滤器,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

Zuul过滤器过滤器优先级

        Spring Cloud为HTTP请求的各个阶段,提供了多个过滤器,这些过滤器的执行顺序,由它们各自提供的一个int值决定,提供的值越小,优先级越高。图7-6展示了默认的过滤器,以及它们的优先级。

图7-6 Spring Cloud自带的过滤器及优先级

        如图7-6,在routing阶段,会优先执行Ribbon路由的过滤器,再执行简单路由过滤器。

自定义过滤器

        了解过滤器的执行顺序后,我们编写一个自定义过滤器。新建过滤类,继承ZuulFilter,实现请见代码清单7-10。

        代码清单7-10:

        codes\07\03\zuul-gateway\src\main\java\org\crazyit\cloud\filter\MyFilter.java

public class MyFilter extends ZuulFilter {

    // 过滤器执行条件
    public boolean shouldFilter() {
        return true;
    }

    // 执行方法
    public Object run() {
        System.out.println("执行 MyFilter 过滤器");
        return null;
    }

    // 表示将在路由阶段执行
    public String filterType() {
        return FilterConstants.ROUTE_TYPE;
    }

    // 返回1,路由阶段,该过滤将会最先执行
    public int filterOrder() {
        return 1;
    }
}

        新建的自定义过滤器,将会在“routing”阶段执行,优先级为1,也就是在routing阶段,该过滤器最先执行。另外注意shouldFilter方法,过滤最终是否执行,由该方法决定,本例返回true,表示访问任何的路由规则,都会执行该过滤器。为了让Spring容器知道过滤器的存在,需要对该类进行配置,代码清单7-11为配置类。

        代码清单7-11:

        codes\07\03\zuul-gateway\src\main\java\org\crazyit\cloud\filter\FilterConfig.java

@Configuration
public class FilterConfig {

	@Bean
	public MyFilter myFilter() {
		return new MyFilter();
	}
}

标签:

很赞哦! ()

本栏推荐