Spring property-placeholder配置positiveInteger

时间:2011-04-26 09:22:23

标签: spring properties spring-security

我想将我的ldapserver端口设置映射到我的属性文件中的属性。 但是当我使用${ldapserverport}而不是我得到错误时:

  

“'$ {ldapserverport}'的值   元素上的属性'port'   'ldap-server'无效   尊重其类型,   'positiveInteger'。“

无论如何要投这个属性? 其他属性工作正常。

我的代码:

<ldap-server id="ldapServer" url="${ldapserverurl}" 
        port="${ldapserverport}"
        manager-dn="${ldapserveruser}" 
        root="${ldapserverroot}"
        manager-password="${ldapserverpassword}"/>

2 个答案:

答案 0 :(得分:3)

这是一些Spring配置样式使用的“自定义命名空间”方法的缺点。虽然它允许非常简洁地表达配置,但它也非常具体,并且不会自动允许<bean>样式定义使用的任何通用替换逻辑,包括属性占位符。

如果架构作者已经将给定属性的硬连线要求作为整数,那么就没有解决它 - 架构的作者和解析它的代码必须添加明确的支持对于占位符。在这种情况下,他们没有。

因此,如果您想使用占位符,则必须将<ldap-server>快捷方式定义“爆炸”到基础<bean>定义的图形中。这并不总是容易的,因为文档必须解释<ldap-server>实际定义的bean。

答案 1 :(得分:0)

    <bean id="ldap-server" class="org.springframework.security.ldap.server.ApacheDSContainer">
      <constructor-arg index="0" value="dc=test,dc=com"/>
      <constructor-arg index="1" value="classpath:ldap_init.ldif"/>
      <property name="port" value="${ldapserverport}"/>
    </bean>

可能需要以下依赖项

    <dependency>
      <groupId>org.apache.directory.server</groupId>
      <artifactId>apacheds-core</artifactId>
      <version>1.5.5</version>
    </dependency>
    <dependency>
      <groupId>org.apache.directory.server</groupId>
      <artifactId>apacheds-core-entry</artifactId>
      <version>1.5.5</version>
    </dependency>
    <dependency>
      <groupId>org.apache.directory.server</groupId>
      <artifactId>apacheds-protocol-ldap</artifactId>
      <version>1.5.5</version>
    </dependency>
    <dependency>
      <groupId>org.apache.directory.server</groupId>
      <artifactId>apacheds-protocol-shared</artifactId>
      <version>1.5.5</version>
    </dependency>
    <dependency>
      <groupId>org.apache.directory.server</groupId>
      <artifactId>apacheds-server-jndi</artifactId>
      <version>1.5.5</version>
    </dependency>
    <dependency>
      <groupId>org.apache.directory.shared</groupId>
      <artifactId>shared-ldap</artifactId>
      <version>0.9.15</version>
    </dependency>