是否可以在applicationcontext中设置资源属性值?

时间:2012-10-17 23:00:48

标签: spring applicationcontext

在applicationcontext.xml中,是否可以设置一个稍后可以在SPEL表达式中使用的值?

例如,有没有办法做到这一点?:

<setProperty name="foo" value="someval" />


<bean id="beanId" name="beanName" class="SomeClass">
    <property name="someVal" value="blah_${foo}"/>
</bean>

我想要这样做的实际原因是我使用语句来创建在许多不同的应用程序上下文中使用的实体管理器。问题是实体管理器需要一个唯一的名称,Bitronix使用该名称来创建一个本地文件,如果多个单元测试同时使用该字段的相同名称运行,则该文件会中断。要设置该唯一名称,我当前为每个应用程序上下文都有一个单独的属性文件,并导入它以从中获取唯一的名称。

而不是做那些废话我宁愿这样做:

<setProperty name="uniqueName" value="someUniqueName" />
<import resource="classpath*:shared/db/fooDb.xml" />

1 个答案:

答案 0 :(得分:5)

您可以使用Spring-el和util命名空间来执行此操作:

<util:properties id="myprops">
    <prop key="foo">someval</prop>
</util:properties>

<bean id="beanId" name="beanName" class="SomeClass">
    <property name="someVal" value="blah_#{myprops.foo}"/>
</bean>