2

すべてのプロパティ値の 1 つが同じString値であるいくつかの Spring Bean があります。StringXML でこれを 1 か所で定義し、プロパティ値の設定ですべての Bean で参照できる方法はありますか?

<bean id="somebean" class="test.SomeBean">
   <property name="property1" ref="someValue"></property>
   <property name="commonProperty" value="commonValue"></property>

<bean id="nextBean" class="test.NextBean">
   <property name="property2" ref="someValue"></property>
   <property name="commonProperty" value="commonValue"></property>

commonValue別の場所に設定し、両方の場所で参照するにはどうすればよいですか?

4

4 に答える 4

6

このようにしてみてください。

<bean id="commonConfig" abstract="true">
    <property name="commonField" value="CommonValue"></property>
</bean>

<bean id="class1" class="com.dataclass.Class1" parent="commonConfig">
    <property name="field1" value="value1"></property>
</bean>
<bean id="class2" class="com.dataclass.Class2" parent="commonConfig">
    <property name="field2" value="value2"></property>
</bean>

Class1 と Class2 は 1 つの共通フィールド名「commonField」を持ち、parent 属性はこの共通の目的のみに使用されます。

Spring では、これは Bean 定義の継承と呼ばれます (これは Java クラスの継承ではありません。上記の Class1 & n Class は、それぞれの Java ファイルで継承されていません)。

詳細については、Spring doc のリンクを参照してください。

于 2012-07-12T08:16:34.453 に答える
3

これまで試したことはありませんが、これはうまくいくはずです

<bean id="commonProp" class="java.lang.String">
    <constructor-arg name="original" value="yourString"></constructor-arg>
</bean>

次に、すべての Bean でそれを参照する必要があります。

<bean id="somebean" class="test.SomeBean">
   <property name="property1" ref="someValue"></property>
   <property name="commonProperty" ref="commonProp"></property>
</bean>
于 2012-07-12T07:49:06.433 に答える
1

You can define your string properties in some "init_constants.properties" file. Then you should load properties file in spring xml:

<bean id="properties"
        class="org.springframework.context.support.PropertySourcesPlaceholderConfigurer">
        <property name="locations">
            <list>
                <value>classpath:db.properties</value>
                <value>classpath:mail.properties</value>
                <value>classpath:init_constants.properties</value>
            </list>
        </property>
    </bean> 

And after that you can inject this properties using xml:

<bean id="somebean" class="test.SomeBean">
   <property name="property1" ref="{$prop1}"></property>
   <property name="commonProperty" value="commonValue"></property>
</bean>

or in code using @Value annotation:

@Value(value="${prop1}")
private String property1;
于 2012-07-12T08:07:39.200 に答える
0

commonValue が文字列の場合は、それをプロパティ ファイルに入れ、 を使用して読み取ることができます@Value annotation

于 2012-07-12T07:48:03.460 に答える