Spring 3.x
我在filter-chain
中有越来越多的过滤器,我正在寻找一种方法来减少上下文文件中这些声明的详细程度。例如,使用spring docs
<bean id="filterChainProxy" class="org.springframework.security.web.FilterChainProxy">
<sec:filter-chain-map path-type="ant">
<sec:filter-chain pattern="/webServices/**" filters="
securityContextPersistenceFilterWithASCFalse,
basicAuthenticationFilter,
exceptionTranslationFilter,
filterSecurityInterceptor" />
</sec:filter-chain-map>
</bean>
想象一下,我们有许多模式都需要相同的过滤器链,我希望能够像"
securityContextPersistenceFilterWithASCFalse,
basicAuthenticationFilter,
exceptionTranslationFilter,
filterSecurityInterceptor"
一样定义这个上下文的本地字符串,并在上下文中使用它
<bean id="filterChainProxy" class="org.springframework.security.web.FilterChainProxy">
<sec:filter-chain-map path-type="ant">
<sec:filter-chain pattern="/foo/**" filters="${defaultFilterChain}" />
<sec:filter-chain pattern="/bar/**" filters="${defaultFilterChain}" />
...
</sec:filter-chain-map>
</bean>
这里没有使用属性,因为它们将被视为String,而不是可以用作bean引用的列表。
答案 0 :(得分:0)
使用PropertyPlaceholderConfigurer替换属性占位符,它可以从外部资源获取属性,但它也可以直接获取属性,并且可以同时使用外部和直接配置。外部属性将覆盖直接配置的属性,使直接配置的属性可用作默认值(可以关闭此行为,使其反过来)。
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="properties">
<props>
<prop key="defaultFilterChain">securityContextPersistenceFilterWithASCFalse, basicAuthenticationFilter, exceptionTranslationFilter, filterSecurityInterceptor</prop>
</props>
</property>
</bean>
答案 1 :(得分:0)