Spring5 XMLでhello worldを表示

Spring5のXML(applicationContext.xml)を使用してhello worldを表示するサンプルです。

確認環境
・Spring 5.2.9
・JDK 11.0.2
・Eclipse 4.17

目次

サンプル 環境
  1.MainController.java
  2.applicationContext.xml
  3.ISyain.java
  4.Syain.java
  @Componentを使用する場合
参考 pom.xml

環境

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

最初にMainController.javaを起動します。
次にapplicationContext.xmlから対象のクラスをDIコンテナにbeanとして登録し
context.getBeanでbean(インスタンス)を取得してメソッドを実行します。

1.MainController.java

package com.example.demo;

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の7行目を指します。
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="testSyain" class="com.example.demo.Syain"></bean>
</beans>

7行目のtestSyainは、MainControllerの11行目を指します。

3.ISyain.java

インターフェースです。

package com.example.demo;

public interface ISyain {
	public String getHello();
}

4.Syain.java

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

package com.example.demo;

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

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

@Componentを使用する場合

@Componentを使用して動かす場合、上記コードから以下3ファイルを修正します。

1.MainController.java

package com.example.demo;

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

<?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.demo.Syain"></bean> -->
	<context:component-scan base-package="com.example.demo" />
</beans>

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

3.Syain.java

package com.example.demo;

import org.springframework.stereotype.Component;

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

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

pom.xml

上記で使用したpom.xmlです。

	<dependencies>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-beans</artifactId>
			<version>5.2.9.RELEASE</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-context</artifactId>
			<version>5.2.9.RELEASE</version>
		</dependency>
	</dependencies>

関連の記事

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

△上に戻る