我是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。
有什么方法可以引用该属性将其用作值?
答案 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