2016-11-08 151 views
1

我只能在这里使用字符串绑定,enableRequestValidation应该总是字符串,放在我的bean我想要使用布尔值,我怎样才能实现这个使用属性占位符绑定?Osgi属性占位符

<property-placeholder 
    persistent-id="JsonValidator" 
    update-strategy="reload" placeholder-prefix="$[" placeholder-suffix="]"> 
    <default-properties> 
     <property name="enableRequestValidation" value="false"></property> 
    </default-properties> 
</property-placeholder> 

<bean id="jsonSchemaRegistration"  class="rest.service.impl.jsonschema.JsonSchemaDynamicFeatureImpl"> 
    <property name="enableRequestValidation" value="$[enabledRequestValidation]"></property> 
</bean> 

加成的例外是像下面

2016-11-08 11:25:34,944 | ERROR | Thread-74  | BlueprintContainerImpl 
     | 15 - org.apache.aries.blueprint.core - 1.4.4 | Unable to start blueprint 
container for bundle core.rest.service.impl/0.6.0.SNAP 
SHOT 
org.osgi.service.blueprint.container.ComponentDefinitionException: Error setting 
property: PropertyDescriptor <name: enableRequestValidation, getter: class core.rest.service.impl.jsonschema.JsonSchemaDynamicFeatureI 
mpl.isEnableRequestValidation(), setter: [class JsonSchemaDynamicFeatureImpl.setEnableRequestValidati 
on(boolean)] 
     at org.apache.aries.blueprint.container.BeanRecipe.setProperty(BeanRecip 
e.java:939)[15:org.apache.aries.blueprint.core:1.4.4] 
     at org.apache.aries.blueprint.container.BeanRecipe.setProperties(BeanRec 
ipe.java:905)[15:org.apache.aries.blueprint.core:1.4.4] 
     at org.apache.aries.blueprint.container.BeanRecipe.setProperties(BeanRec 
ipe.java:886)[15:org.apache.aries.blueprint.core:1.4.4] 
+0

你会得到什么错误?我希望这可以作为蓝图自动转换价值。 –

+0

添加堆栈跟踪到问题 –

回答

-1

蓝图不支持属性占位符。

+0

不知道为什么downvote。正如我所述,Blueprint规范不包含属性占位符支持。 –

1

你能够使用白羊座蓝图配置管理?您不提供有关您的环境的任何信息,但使用ServiceMix时,我一直都这样做。例如:

<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:config="http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.1.0" 
    xsi:schemaLocation=" 
    http://www.osgi.org/xmlns/blueprint/v1.0.0 http://www.osgi.org/smlns/blueprint/v1.0.0/blueprint.xsd"> 

    <!-- OSGi blueprint property placeholder binding to a configuration file --> 
    <config:property-placeholder id="myProps.props" persistent-id="myProps" update-strategy="reload"> 
    <config:default-properties> 
     <config:property name="my.setting" value="true" /> 
    </config:default-properties> 
    </config:property-placeholder> 

    <bean id="myBean" class="org.me.MyClass"> 
    <property name="setting" value="${my.setting}" /> 
    </bean> 
</blueprint> 

请注意包含支持更新策略设置的blueprint-cm名称空间的版本1.1.0。属性注入将找到setSetting(布尔设置)方法并尝试将该字符串转换为布尔值。这里指定了默认值“true”,但可以通过对etc/myProps.cfg的更改覆盖。