Spring DelegatingFilterProxy

最近在学习shiro的时候看到了一个比较有用的filter-------------org.springframework.web.filter.DelegatingFilterProxy

他能将filter的部分配置放到applicationContext.xml中去,当然如果filter的配置项比较简单(key-value),可以直接在web.xml中配置

中加入一下配置即可

        
	     targetFilterLifecycle
	     true
        


如果考虑比如说ilter的配置比较复杂或者filter的配置存在依赖项,则前面这种方式完全不足以应付这种场景。DelegatingFilterProxy则解决了这样的问题,

配置的应用如下:

web.xml中:

	
		shiroFilter
		org.springframework.web.filter.DelegatingFilterProxy
		
			targetFilterLifecycle
			true
		
	
applicationContext中:

	
		
		
		
		
			
				/login = authc
				/logout = logout
				/static/** = anon
				/api/** = anon
				/register/** = anon
				/admin/** = roles[admin]
				/** = user
			
		
	

其中web.xml中<filter-name>的值必须和applicationContext.xml中bean id的值相同即可。


读者也可以猜测到spring内部是怎么干的,简单的说就是在filter初始化的时候,拿到上下文applicationContext,然后获取web.xml中的配置项,通过getBean方法就获取到了applicationContext.xml中对应的filter.


你可能感兴趣的:(spring)