评估 Spring 的 context.xml 中的属性(基本模板)
Evaluate properties in Spring's context.xml (basic templating)
我想知道是否可以评估 Spring 的 xml 配置文件中的属性。我目前已经在使用 PropertyPlaceholderConfigurer
注入属性。但是我想实现的是注入一个值,如果某个属性是true,注入另一个值,如果是false[=27] =].
例如,如果我的自定义属性 com.github.dpeger.jpa.validate
是 正确的 。我知道我可以像这样指定默认值:
<property name="jpaProperties">
<map>
<entry key="hibernate.hbm2ddl.auto" value="${com.github.dpeger.jpa.validate:none}" />
...
</map>
</property>
但是是否有可能以某种方式评估属性的值可能是这样的:
<property name="jpaProperties">
<map>
<entry key="hibernate.hbm2ddl.auto" value="${com.github.dpeger.jpa.validate?validate:none}" />
...
</map>
</property>
第一个选项:
您可以使用 #{}
EL 表达式并在该表达式中插入 ${}
占位符:
<property name="jpaProperties">
<map>
<entry key="hibernate.hbm2ddl.auto"
value="#{${com.github.dpeger.jpa.validate}?'validate':'none'}" />
...
</map>
</property>
第二个选项:
您可以创建单独的 属性 bean(注意,您必须定义 xmlns:util
命名空间和 spring-util.xsd
位置):
<beans ...
xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="...
http://www.springframework.org/schema/util
http://www.springframework.org/schema/util/spring-util.xsd">
<util:properties id="props" location="classpath:appliction.properties"/>
...
</beans>
现在您可以通过 id:
在 EL 表达式中使用这个 属性 bean
<property name="jpaProperties">
<map>
<entry key="hibernate.hbm2ddl.auto"
value="#{props['com.github.dpeger.jpa.validate']?'validate':'none'}" />
...
</map>
</property>
我想知道是否可以评估 Spring 的 xml 配置文件中的属性。我目前已经在使用 PropertyPlaceholderConfigurer
注入属性。但是我想实现的是注入一个值,如果某个属性是true,注入另一个值,如果是false[=27] =].
例如,如果我的自定义属性 com.github.dpeger.jpa.validate
是 正确的 。我知道我可以像这样指定默认值:
<property name="jpaProperties">
<map>
<entry key="hibernate.hbm2ddl.auto" value="${com.github.dpeger.jpa.validate:none}" />
...
</map>
</property>
但是是否有可能以某种方式评估属性的值可能是这样的:
<property name="jpaProperties">
<map>
<entry key="hibernate.hbm2ddl.auto" value="${com.github.dpeger.jpa.validate?validate:none}" />
...
</map>
</property>
第一个选项:
您可以使用 #{}
EL 表达式并在该表达式中插入 ${}
占位符:
<property name="jpaProperties">
<map>
<entry key="hibernate.hbm2ddl.auto"
value="#{${com.github.dpeger.jpa.validate}?'validate':'none'}" />
...
</map>
</property>
第二个选项:
您可以创建单独的 属性 bean(注意,您必须定义 xmlns:util
命名空间和 spring-util.xsd
位置):
<beans ...
xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="...
http://www.springframework.org/schema/util
http://www.springframework.org/schema/util/spring-util.xsd">
<util:properties id="props" location="classpath:appliction.properties"/>
...
</beans>
现在您可以通过 id:
在 EL 表达式中使用这个 属性 bean<property name="jpaProperties">
<map>
<entry key="hibernate.hbm2ddl.auto"
value="#{props['com.github.dpeger.jpa.validate']?'validate':'none'}" />
...
</map>
</property>