Spring コンストラクタに順番指定で引数を渡す
コンストラクタインジェクションを行いたいときのサンプルを示します。
コンストラクタに引数を渡したい。その引数は定義ファイルに書いて、インジェクションしたい。
そんなときのサンプルです。
ディレクトリ構成は、こんな感じです。
spring-config.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"> <bean name="person" class="sample.Person"> <constructor-arg index="0" value="Takeshi" /> <constructor-arg index="1" value="28" /> </bean> <bean id="calendar" class="java.util.Calendar" factory-method="getInstance" /> </beans>
Person.java
package sample; public class Person { private String name; private int age; public Person(){ } public Person(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public void hello() { System.out.println("hello world!"); } public void goodbye() { System.out.println("Good bye..."); } }
Example1.java
package di; import java.util.Calendar; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import sample.Person; public class Example1 { public static void main(String[] args) throws InterruptedException { ApplicationContext context = new ClassPathXmlApplicationContext(new String[]{"spring-config.xml"}); Person takeshi = context.getBean("person",Person.class); takeshi.hello(); System.out.println(takeshi.getName()); System.out.println(takeshi.getAge()); } }
これを実行した結果は以下のようになります。
hello world! Takeshi 28