には、私は、次の豆を持って言う:春 - 複数のプロパティセットを含むビーン
<bean id="some-bean" class="com.icyrock.example.SomeBean">
<property name="pa1" value="va1"/>
<property name="pa2" value="va2"/>
<property name="pa3" value="va3"/>
<property name="pa4" value="va4"/>
<property name="pa5" value="va5"/>
<property name="pa5">
<bean class="com.icyrock.example.SomeOtherBean>
<property name="px1" value="vx1"/>
<property name="px2" value="vx2"/>
<property name="px3" value="vx3"/>
<property name="px4" value="vx4"/>
<property name="px5" value="vx5"/>
</bean>
</property>
</bean>
Iの線に沿ってブロックにこれを分離したい:
<block id="b1">
<property name="pa1" value="va1"/>
<property name="pa2" value="va2"/>
<property name="pa3" value="va3"/>
</block>
<block id="b2">
<property name="pa4" value="va4"/>
<property name="pa5" value="va5"/>
</block>
<block id="b3">
<property name="px1" value="vx1"/>
<property name="px2" value="vx2"/>
</block>
<block id="b4">
<property name="px3" value="vx3"/>
<property name="px4" value="vx4"/>
<property name="px5" value="vx5"/>
</block>
<bean id="some-bean" class="com.icyrock.example.SomeBean">
<block-ref id="b1"/>
<block-ref id="b2"/>
<property name="pa5">
<bean class="com.icyrock.example.SomeOtherBean>
<block-ref id="b3"/>
<block-ref id="b4"/>
</bean>
</property>
</bean>
block
とblock-ref
アイデアを説明するためだけの想像上のスプリングタグです。
せずにこれを行う方法があります:
ないすでに春自体(すなわち沿って何に何かを使用して、Javaクラス(例えばプロパティのマップまたはサブクラスを受け入れる)- は、いくつかの工場/不動産設定者/ Springコンテキストファイルで使用するその他のものをビルドする行)
目的は、関係(例:親子)を使わずに定義(つまりブロック)を再利用することです関係やそのようなもの)。
<bean id="dataSource" destroy-method="close" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="${jdbc.driverClassName}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</bean>
(hereから例):例として、これは標準のJDBCデータ・ソースの定義です。異なるサーバーがアクセスしている場合、同じドライバを共有する場合があります(driverClassName
が共有されます)。同じ資格情報を使用する場合もあります(username
とpassword
が共有されます) 。私は次のようなことをしたい:
<block id="driver-credentials">
<property name="driverClassName" value="${jdbc.driverClassName}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</block>
<bean id="ds1" class="org.apache.commons.dbcp.BasicDataSource">
<property name="url" value="${jdbc.url1}"/>
<block-ref id="driver-credentials"/>
</bean>
<bean id="ds2" class="org.apache.commons.dbcp.BasicDataSource">
<property name="url" value="${jdbc.url2}"/>
<block-ref id="driver-credentials"/>
</bean>
<bean id="ds3" class="org.apache.commons.dbcp.BasicDataSource">
<property name="url" value="${jdbc.url3}"/>
<block-ref id="driver-credentials"/>
</bean>
またはこれらの行に沿ったもの。明らかに、これはこの単純な例の親子になることができます。私はmixin型のソリューションについて疑問を抱いています。 Beanのレベルを除いてSpringが複数のファイルに対して提供しているのとほとんど同じです。
上記を行うことが効果的ではないか、代替方法が歓迎される理由についての意見。
はい、私は親子関係を持たないようにしようとしています。プロパティはコレクションではなく、それぞれが本当に何か(例:上記のようなString)であるプロパティのセットです。 –