如何在servlet-context中引用bean的属性?

时间:2014-06-27 23:26:18

标签: java spring

我是Java新手,我正在开发一个Spring MVC项目。 我们有一个servlet-context,我们在运行时存储我们需要的信息。我有一组在我的系统上很重要的URL,它们都基于在servlet上下文中定义的基本URL,如下所示:

<bean id="applicationConfiguration"
        class="example.ApplicationConfig">
        <property name="baseUrl" value="http://localhost:8080/"></property>
    </bean>

现在,我有一个第二个bean,我想在其中引用baseUrl:

   <bean id="menu"
            class="example.Menu">
            <property name="entry1name" value="entry1"></property>
            <property name="entry1value" value="<baseUrl>"></property>
            <property name="entry2name" value="entry2"></property>
            <property name="entry2value" value="<baseUrl>/page2"></property>
        </bean>

第二个bean比实际的更简单一点,专注于问题。

我想引用baseUrl属性,所以我正在搜索和尝试

之类的东西
${applicationConfiguration.baseUrl}

@applicationConfiguration.baseUrl

使用

<property name="entry1value" ref="applicationConfiguration.baseUrl"></property>

等等。

前两个用作字符串,而不是&#34;已解决&#34;。 第二个不起作用,因为.baseUrl不是bean。

有什么方法可以引用该属性将其用作值?

1 个答案:

答案 0 :(得分:1)

在这种情况下,你必须将baseUrl定义为另一个bean

<bean id="baseUrl" class="java.lang.String">
  <constructor-arg value="http://localhost:8080/"/>
</bean>

然后使用它参考

例如

<property name="baseUrl" ref="baseUrl/">

在您的特定示例中,更适合使用PropertyPlaceholderConfigurer而不是为每个属性定义单独的bean

<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">

    <property name="location">
        <value>yourApp.properties</value>
    </property>
</bean>

然后通过属性键名直接在应用程序上下文中引用属性,例如

<property name="baseurl" value="${baseurl}" />

前提是您的yourApp.properties位于类路径的根目录下,并且具有以下属性

baseurl=somevalue