如何在Spring 2.5中的配置文件中连接两个String bean

时间:2012-07-19 17:22:19

标签: java spring

我知道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>

4 个答案:

答案 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>