私は「Spring Recipes」の本を読んでいて、春の「魔法」を例を挙げて調査しようとしています。それが私が持っているものです。Bean クラスSequenceGenerator :
public class SequenceGenerator {
private List<Object> suffixes;
//.....
public void setSuffixes(List<Object> suffixes) {
this.suffixes = suffixes;
}
public synchronized String getSequence() {
StringBuffer buffer = new StringBuffer();
for (Object suffix : suffixes) {
buffer.append(suffix);
buffer.append("-");
}
return buffer.toString();
}
}
メインクラス:
public class Main {
public static void main(String[] args) {
ApplicationContext context =
new ClassPathXmlApplicationContext("beans.xml");
SequenceGenerator generator =
(SequenceGenerator) context.getBean("sequenceGeneratorSet");
System.out.println(generator.getSequence());
}
}
XML 構成:
<bean id="sequenceGeneratorSet" class="com.apress.springrecipes.sequence.SequenceGenerator">
<property name="initial" value="100000"/>
<property name="suffixes">
<set>
<value>A</value>
<value>A</value>
<bean class="java.net.URL">
<constructor-arg value="http" />
<constructor-arg value="www.apress.com" />
<constructor-arg value="/" />
</bean>
</set>
</property>
</bean>
xml では、意図的にタグを使用して結果を監視しています。また、同じ値「A」を 2 回書きました。Spring は、Bean クラスの型定義として、"suffixes" プロパティの ArrayList を注入したことに気付きました。ただし、「A」値を 1 つだけ含む、出力のセットのように動作します。Spring が内部的にそれをどのように理解できるか、誰にもわかりませんか?