Определите локальное свойство для списка ссылок bean в Spring - PullRequest
1 голос
/ 01 сентября 2011

Весна 3.x

У меня есть растущий список фильтров в filter-chain, и я ищу способ уменьшить многословность этих объявлений в моем файле контекста. например, используя пример из пружинных документов

<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-компоненты.

Ответы [ 2 ]

0 голосов
/ 27 сентября 2011
0 голосов
/ 26 сентября 2011

Замена заполнителей свойств подобным образом выполняется с помощью PropertyPlaceholderConfigurer, который может получать свойства из внешних ресурсов, но он также может принимать свойства напрямую, и он может использовать как внешние, так и напрямую настроенные одновременно.Внешние свойства переопределяют напрямую настроенные свойства, что делает непосредственно настроенные свойства полезными в качестве значений по умолчанию (это поведение можно отключить, сделав его наоборот).

<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
  <property name="properties">
    <props>
      <prop key="defaultFilterChain">securityContextPersistenceFilterWithASCFalse, basicAuthenticationFilter, exceptionTranslationFilter, filterSecurityInterceptor</prop>
    </props>
  </property>
</bean>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...