【SpringCloud NetFlix】网关Zuul(四)功能进阶

这里写图片描述

数字越小,优先级越高

自定义过滤器
  • shouldFilter方法
  • 优先级

自定义ZuulFilter:

public class MyFilter extends ZuulFilter {

    //判断要不要继续执行;ture为总是要执行
    public boolean shouldFilter() {
        return true;
    }

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

    @Override
    public String filterType() {
        return FilterConstants.ROUTE_TYPE;
    }

    //设置该过滤器的优先级为最优先执行
    @Override
    public int filterOrder() {
        return 1;
    }

}

注入到Spring容器

@Configuration
public class FilterConfig {
    @Bean
    public MyFilter myFilter() {
        return new MyFilter();
    }
}
过滤器动态加载

引入依赖

<dependency>
    <groupId>org.codehaus.groovy</groupId>
    <artifactId>groovy-all</artifactId>
    <version>2.4.12</version>
</dependency>

主启动类加入动态扫描配置

    @PostConstruct
    public void zuulInit() {
        FilterLoader.getInstance().setCompiler(new GroovyCompiler());
        // 读取配置,获取脚本根目录
        String scriptRoot = System.getProperty("zuul.filter.root", "groovy/filters");
        // 获取刷新间隔
        String refreshInterval = System.getProperty("zuul.filter.refreshInterval", "5");
        if (scriptRoot.length() > 0) scriptRoot = scriptRoot + File.separator;
        try {
            FilterFileManager.setFilenameFilter(new GroovyFileFilter());
            //扫描该根目录(scriptRoot)下的pre、route、post的过滤器
            FilterFileManager.init(Integer.parseInt(refreshInterval), scriptRoot + "pre", 
                    scriptRoot + "route", scriptRoot + "post");
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }

新建和主启动类中配一致的动态加载过滤器的目录,如下:

这里写图片描述
项目全部启动后,动态的忘post\pre\route里面装入基于ZuulFilter的过滤器类,会实现动态加载。

@EnableZuulServer和@EnableZuulProxy区别

经过的过滤器不一样

这里写图片描述

这里写图片描述

@EnableZuulServer不具有调用集群能力和简单路由功能

动态路由在配置中心统一管理
  • 配置文件同步

  • 配置动态加载
    以上为疯狂SpringCloud微服务架构实战学习笔记
    感谢杨恩雄老师:https://my.oschina.net/JavaLaw

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

女汉纸一枚

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值