Springでコンストラクターインジェクション
Spring Frameworkでは、設定XMLファイルにコンストラクタ・インジェクションの定義をすることで、
値が注入(設定)されたインスタンスを取得することができる。
ここでは実際にコンストラクタ・インジェクションを使って、コンストラクタに引数の値を渡す定義を使ってみようと思う。
まず、ディレクトリ構成から見てみよう。
使うのは、Main.javaとFriend.java。そしてspring-config.xmlです。
まずは、作成するインスタンスを見てみます。
Friend.java
package sample1.bean; public class Friend { private String firstName; private String lastName; private String interest; public Friend(){ } public Friend(String firstName, String lastName) { this.firstName = firstName; this.lastName = lastName; } public Friend(String firstName, String lastName, String interest) { this.firstName = firstName; this.lastName = lastName; this.interest = interest; } public String getFirstName() { return firstName; } public void setFirstName(String firstName) { this.firstName = firstName; } public String getLastName() { return lastName; } public void setLastName(String lastName) { this.lastName = lastName; } public String getInterest() { return interest; } public void setInterest(String interest) { this.interest = interest; } }
普通のbeanですね。
定義ファイルを使って、こいつに値を設定していきます。
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="noArgFriend" class="sample1.bean.Friend" /> <bean name="twoArgFriend" class="sample1.bean.Friend"> <constructor-arg name="lastName" value="tomoko" /> <constructor-arg name="firstName" value="sawada" /> </bean> <bean name="threeArgFriend" class="sample1.bean.Friend"> <constructor-arg name="lastName" value="kyoko" /> <constructor-arg name="firstName" value="yano" /> <constructor-arg name="interest" value="travel" /> </bean> <bean id="friend1" class="sample1.bean.Friend"> <property name="firstName" value ="takeshi" /> <property name="lastName" value="yoshida" /> <property name="interest" value="soccer" /> </bean> </beans>
コンストラクタの部分は、"noArgFriend"と"twoArgFriend"と"threeArgFriend"の部分です。
constructor-argタグのnameには引数の名前、valueには値を設定します。
mainがあるファイルは以下です。
package sample1; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import sample1.bean.Friend; public class Main { public static void main(String[] args) { ApplicationContext context = new ClassPathXmlApplicationContext(new String[] {"spring-config.xml"}); //引数なしのコンストラクタ・インジェクション Friend defaultFriend = context.getBean("noArgFriend", Friend.class); if (defaultFriend instanceof Friend) { System.out.println("this is friend instance"); } Friend twoArgFriend = context.getBean("twoArgFriend", Friend.class); System.out.println("私の名前は" + twoArgFriend.getFirstName() +" "+ twoArgFriend.getLastName()); Friend threeArgFriend = context.getBean("threeArgFriend", Friend.class); System.out.println("私の名前は" + threeArgFriend.getFirstName() +" "+ threeArgFriend.getLastName()); System.out.println("趣味は " + threeArgFriend.getInterest() + " です"); } }
実行した結果は以下のとおりです。
this is friend instance 私の名前はsawada tomoko 私の名前はyano kyoko 趣味は travel です
- 作者: 掌田津耶乃
- 出版社/メーカー: 秀和システム
- 発売日: 2014/08/01
- メディア: 単行本
- この商品を含むブログ (1件) を見る