4

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

4 に答える 4

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();
    }
}
于 2012-07-19T17:33:38.790 に答える
2

Spring は、このようなアプリケーション ロジックを格納する場所ではありません。

それが必要な場合は、次のgetPath()ようなメソッドを追加します。

public String getPath() {
    if(path == null) {
        path = getDir() + getPath();
    }
    return path;
}
于 2012-07-19T17:24:45.713 に答える
0

Spring-ELを使ってみましたか?このリンクを見てください

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>

これはSpring3.0以降で利用できます。

于 2012-07-19T17:28:08.627 に答える
0

valueの代わりにrefを使用できます。つまり

<bean id="path" class="java.lang.String">
    <constructor-arg ref="file"/>
</bean>
于 2012-07-19T17:29:14.257 に答える