我知道Spring 3.0及以上版本有EL,但在这种情况下,该项目使用的是Spring 2.5,例如:
<bean id="dir" class="java.lang.String">
<constructor-arg value="c:/work/"
</bean>
<bean id="file" class="java.lang.String">
<constructor-arg value="file.properties" />
</bean>
<bean id="path" class="java.lang.String">
<constructor-arg value=**dir + file**/>
</bean>
答案 0 :(得分:6)
这有用吗?
<bean id="dir" class="java.lang.String">
<constructor-arg value="c:/work/"
</bean>
<bean id="file" class="java.lang.String">
<constructor-arg value="file.properties" />
</bean>
<bean id="path" factory-bean="dir" factory-method="concat">
<constructor-arg ref="file"/>
</bean>
请注意String.concat(java.lang.String)
方法的用法为factory-method
。
但是对于像这样的东西来说,XML并不是最好的地方,那么Java @Configuration
呢?
@Configuration
public class Cfg {
@Bean
public String dir() {
return "c:/work/";
}
@Bean
public String file() {
return "file.properties";
}
@Bean
public String path() {
return dir() + file();
}
}
答案 1 :(得分:2)
Spring不是存储这样的应用程序逻辑的地方。
如果您需要,请添加getPath()
方法,例如:
public String getPath() {
if(path == null) {
path = getDir() + getPath();
}
return path;
}
答案 2 :(得分:0)
您是否尝试过使用Spring-EL? 看一下这个LINK
使用Spring-EL,您可以执行以下操作:
<bean id="dir" class="java.lang.String">
<property name="path" value="c:/work/" />
</bean>
<bean id="file" class="java.lang.String">
<property name="fileName" value="file.properties" />
</bean>
<bean id="path" class="java.lang.String">
<property name="initialShapeSeed" value="#{dir.path}#{file.fileName}"/>
</bean>
从Spring 3.0开始就可以使用。
答案 3 :(得分:0)
您可以使用ref而不是value。即。
<bean id="path" class="java.lang.String">
<constructor-arg ref="file"/>
</bean>