我只能在这里使用字符串绑定,enableRequestValidation应该总是字符串,放在我的bean中我想使用boolean,我怎样才能使用property-placeholder绑定来实现呢?
<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 :(得分:1)
您是否可以使用Aries Blueprint Configuration Managagement?您没有提供有关您的环境的任何信息,但使用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命名空间的verion 1.1.0,它支持更新策略设置。属性注入将找到setSetting(布尔设置)方法并尝试将字符串转换为布尔值。这里默认值为&#34; true&#34;已指定,但可以通过更改etc / myProps.cfg覆盖它。
答案 1 :(得分:-1)
Blueprint不支持属性占位符。