Spring5 XMLでhello worldを表示

Spring5のXMLベースConfigurationでhello worldを表示するサンプルです。
次にアノテーションベースConfigurationでhello worldを表示します。

確認環境
・Spring 5.3.7
・JDK 11.0.11
・STS 4 / Eclipse 4.17

目次

サンプル Spring5 XMLでhello worldを表示の概要
  pom.xml
  1.起動するファイル(MainController.java)
  2.設定ファイル(applicationContext.xml)
  3.beanとして使用(ISyain,Syain)
  実行する
  アノテーションベースConfigurationを使用する(@Component)

Spring5 XMLでhello worldを表示の概要

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

処理の流れ

1.XMLベースConfigurationでhello worldを表示する。
2.一部ファイルを修正してアノテーションベースConfigurationでhello worldを表示する。

構築と実行

1.Javaプロジェクトを作成。
2.Mavenプロジェクトに変換。
Eclipse JavaプロジェクトからMavenプロジェクトに変換
3.pom.xmlでspringを取得。
4.javaファイルとxmlファイルを作成する。
5.実行して確認する。

githubにコードがあります。

・XMLベースConfiguration
https://github.com/ut23405/spring/tree/master/spring5-xml-hello

・アノテーションベースConfiguration
https://github.com/ut23405/spring5/tree/master/spring5-xml-annotation-hello

pom.xml

以下のコードをpom.xmlの<project>タグ内に貼り付けます。
<dependencies>が既にある場合は2~13行目までをコピペします。
保存するとダウンロードが始まります。右下に進捗バーが出ます。

<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>

 

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を読み込みます。
XMLの設定ファイルを使用するのでXMLベースConfigurationと呼ばれます。
11行目のtestSyainは、applicationContext.xmlの7行目を指します。
context.getBeanでDIコンテナからbean(インスタンス)を取得しています。
変数のデータ型はインターフェースです。

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="testSyain" class="com.example.test1.Syain"></bean>
</beans>

7行目のtestSyainは、MainControllerの11行目を指します。
設定ファイルがXMLなので、XMLベースConfigurationです。

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

ISyain.java

インターフェースです。

package com.example.test1;

public interface ISyain {
	public String getHello();
}

Syain.java

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

package com.example.test1;

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

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

実行する

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

アノテーションベースConfigurationを使用する(@Component)

XMLファイルにcomponent-scanと対象のパッケージを記述し、対象のクラスに@Componetを追加します。XMLファイルにbeanを1つずつ定義する必要がなくなります。

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);
		ISyain syain = context.getBean("syain", ISyain.class);

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

11行目をコメントにし、12行目を追加します。
@Componetを追加するSyainクラスから最初を小文字にしたsyainを指定します。

2.applicationContext.xml

@ComponentScanを追加します。

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:context="http://www.springframework.org/schema/context"
	xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans.xsd
    http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context.xsd">

	<!-- <bean id="testSyain" class="com.example.test1.Syain"></bean> -->
	<context:component-scan base-package="com.example.test1" />
</beans>

2~8行目をコピペし直します。
10行目をコメントにし、11行目を追加します。
component-scanとパッケージ名を指定しています。

3.Syain.java

@Componentを追加します。

package com.example.test1;
import org.springframework.stereotype.Component;

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

5行目に@Componetを追加しています。

関連の記事

SpringBoot hello worldを表示するサンプル

△上に戻る