1. ホーム

[解決済み】SpringでList Beanを定義する方法は?

2022-04-10 02:32:48

質問

アプリケーションのステージを定義するためにSpringを使っています。必要なクラス(ここでは Configurator がステージと一緒にインジェクトされます。

次に、ステージのリストを別のクラスで必要とします。 LoginBean . その Configurator は、彼のステージ一覧へのアクセスを提供しない。

クラスを変更することができません Configurator .

私のアイデア

Stagesという新しいBeanを定義し、それを ConfiguratorLoginBean . このアイデアの問題点は、このプロパティをどのように変換すればいいのか分からないことです。

<property ...>
  <list>
    <bean ... >...</bean>
    <bean ... >...</bean>
    <bean ... >...</bean>
  </list>
</property>

をビーンに変換します。

このようなものはうまくいきません。

<bean id="stages" class="java.util.ArrayList">

どなたか教えてください。

どのように解決するのですか?

Spring util 名前空間をインポートします。すると、以下のようにリストBeanを定義することができます。

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="http://www.springframework.org/schema/beans
                    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
                    http://www.springframework.org/schema/util
                    http://www.springframework.org/schema/util/spring-util-2.5.xsd">


<util:list id="myList" value-type="java.lang.String">
    <value>foo</value>
    <value>bar</value>
</util:list>

value-type は、使用するジェネリックタイプで、任意である。また、リスト実装クラスを指定するには、属性 list-class .