shiro框架源码解析与改造(一)---DelegatingFilterProxy

DelegatingFilterProxy是springmvc中的类。

在传统项目中web.xml中配置:

<filter>
    <filter-name>ShiroFilter</filter-name>
    <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
  </filter>

如果在spring boot项目中,可以用下面的配置方式:

@Bean
    public FilterRegistrationBean setFilter(){

        FilterRegistrationBean filterBean = new FilterRegistrationBean();
        filterBean.setFilter(new DelegatingFilterProxy());
        filterBean.setName("ShiroFilter");
        filterBean.addUrlPatterns("/*");
        return filterBean;
    }

这个类的主要作用是查找真正的filter,这个filter的名字和DelegatingFilterProxy设置的filter名字一致。
由下面的代码执行查找工作:

protected void initFilterBean() throws ServletException {
        synchronized (this.delegateMonitor){
            if(this.delegate==null){
                if (this.targetBeanName==null){
                    this.targetBeanName=this.getFilterName();
                }
                WebApplicationContext wac= this.findWebApplicationContext();
                if(wac != null) {
                    this.delegate = this.initDelegate(wac);
                }
            }

        }
    }
WebApplicationContext wac= this.findWebApplicationContext();
这一行是获取springmvc容器
this.delegate = this.initDelegate(wac);
这一行就是从springmvc的容器中查找名为ShiroFilter的bean。
 private Filter initDelegate(WebApplicationContext wac) {
        Filter delegate = (Filter)wac.getBean(this.getTargetBeanName(), Filter.class);
        return delegate;
    }
targetName就是DelegatingFilterProxy的name
this.targetBeanName=this.getFilterName();


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值