Spring5 XMLでコンストラクタを行う

Spring5のXML(applicationContext.xml)を使用してコンストラクタを行うサンプルです。

確認環境
・Spring 5.3.7
・JDK 11.0.11
・STS 4

目次

サンプル Spring5 XMLでコンストラクタを行う概要
  1.起動するファイル(MainController.java)
  2.設定ファイル(applicationContext.xml)
  3.beanとして使用(ISyain,Syain,IHello,Hello)
  実行する
  pom.xml

Spring5 XMLでコンストラクタを行う概要

今回作成したファイルです。

処理の流れ

・MainController.javaが以下を行います。
・applicationContext.xmlから対象のクラスをDIコンテナにbeanとして登録。
・context.getBeanでbean(インスタンス)を取得してコンストラクタを使用しメソッドを実行。

githubにコードがあります。
https://github.com/ut23405/spring5/tree/master/spring5-xml-construct

1.起動するファイル(MainController.java)

package com.example.test1;

import org.springframework.context.support.ClassPathXmlApplicationContext;

public class MainController {
	public static void main(String[] args) {

		ClassPathXmlApplicationContext context = 
				new ClassPathXmlApplicationContext("applicationContext.xml");

		ISyain syain = context.getBean("testSyain", ISyain.class);

		System.out.println(syain.getHello()); //Hello World!
		context.close();
	}
}

9行目は、applicationContext.xmlを読み込みます。
11行目のtestSyainは、applicationContext.xmlの9行目を指します。
context.getBeanでインスタンス化しています。変数のデータ型はインターフェースです。

2.設定ファイル(applicationContext.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.xsd">

	<bean id="testHello" class="com.example.test1.Hello"></bean>
	
    <bean id="testSyain" class="com.example.test1.Syain">
		<constructor-arg ref="testHello"></constructor-arg>
    </bean>
</beans>

7行目は、Helloクラスを指します。
9行目は、Syainクラスを指します。
10行目は、Syainクラスのコンストラクタの引数のHelloクラスです。

3.beanとして使用(ISyain,Syain,IHello,Hello)

ISyain.java

インターフェースです。

package com.example.test1;

public interface ISyain {
	public String getHello();
}

Syain.java

上記インターフェースを実装しています。

package com.example.test1;

public class Syain implements ISyain {
	private Hello hello1;
	
	public Syain(Hello a) {
		this.hello1 = a;
	}
	@Override
	public String getHello() {
		return hello1.getHello();
	}
}

7行目は、コンストラクタです。
生成されたインスタンスを5行目の変数にセットします。

IHello.java

インターフェースです。

package com.example.test1;

public interface IHello {
	public String getHello();
}

Hello.java

上記インターフェースを実装しています。

package com.example.test1;

public class Hello implements IHello {
	@Override
	public String getHello() {
		return "Hello World!";
	}
}

メソッドは、文字列のHello Worldを返します。

実行する

MainController.javaを右クリックして「実行」→「Javaアプリケーション」をクリックするとコンソールにHello World!と表示されます。

pom.xml

<dependencies>
	<!-- https://mvnrepository.com/artifact/org.springframework/spring-beans -->
	<dependency>
	    <groupId>org.springframework</groupId>
	    <artifactId>spring-beans</artifactId>
	    <version>5.3.7</version>
	</dependency>
	<!-- https://mvnrepository.com/artifact/org.springframework/spring-context -->
	<dependency>
	    <groupId>org.springframework</groupId>
	    <artifactId>spring-context</artifactId>
	    <version>5.3.7</version>
	</dependency>
</dependencies>

関連の記事

Spring5 XMLでhello worldを表示

△上に戻る