読者です 読者をやめる 読者になる 読者になる

感謝のプログラミング 10000時間

たどり着いた結果(さき)は、感謝でした。

Springで引数ありのコンストラクタを使ってインスタンスを生成する

Spring
<スポンサーリンク>

前回の記事では引数なしのコンストラクタでのインスタンス生成を見てきましたが、今回は引数ありのコンストラクタを使ってインスタンスを生成してみましょう。
フォルダ構成などは前回の記事を参考にしてください。

まず、生成するインスタンスのクラスは以下のPerson.javaです。
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...");
	}
}

このPerson.javaにnameとageを設定します。

設定ファイルには以下のように書きます。
constructor-argがポイント。
ここに引数の名前と値を設定します。

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 name="name" value="Takeshi" />
    	<constructor-arg name="age" value="28" />
    </bean>
    
    <bean id="calendar" class="java.util.Calendar" factory-method="getInstance" />
</beans>

これらを使うクラスです。

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