Spring配置无法扩展属性

时间:2014-12-09 17:30:02

标签: java spring

我试图通过属性文件启用或禁用授权。但是以下不起作用

<global-method-security pre-post-annotations="${enabled}" />

xml验证失败

此行找到多个注释:      - cvc-enumeration-valid:Value&#39; $ {enabled}&#39;对于枚举&#39; [已禁用,已启用]&#39;而言,这不是方面有效的。它必须是来自的价值      枚举。

有人可以建议我这样做的正确方法吗?

1 个答案:

答案 0 :(得分:2)

不幸的是,Spring Security XSD对该(和其他)属性IIRC的可能值进行了硬编码:

<xs:attributeGroup name="global-method-security.attlist">
  <xs:attribute name="pre-post-annotations">
    <xs:annotation>
      <xs:documentation>Specifies whether the use of Spring Security's pre and post invocation annotations
        (@PreFilter, @PreAuthorize, @PostFilter, @PostAuthorize) should be enabled for this
        application context. Defaults to "disabled".
      </xs:documentation>
    </xs:annotation>
    <xs:simpleType>
      <xs:restriction base="xs:token">
        <xs:enumeration value="disabled"/>
        <xs:enumeration value="enabled"/>
      </xs:restriction>
    </xs:simpleType>
  </xs:attribute>
...

如果您希望XML验证成功(因为XML验证不了解Spring的替换令牌),则无法进行属性替换。