Spring5のXML(applicationContext.xml)を使用してコンストラクタを行うサンプルです。
目次
サンプル | 環境 |
1.MainController.java | |
2.applicationContext.xml | |
3.ISyain.java | |
4.Syain.java | |
5.IHello | |
6.Hello | |
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の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.demo.Hello"></bean>
<bean id="testSyain" class="com.example.demo.Syain">
<constructor-arg ref="testHello"></constructor-arg>
</bean>
</beans>
7行目は、Helloクラスを指します。
9行目は、Syainクラスを指します。
10行目は、Syainクラスのコンストラクタの引数のHelloクラスです。
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 {
private Hello hello1;
public Syain(Hello a) {
this.hello1 = a;
}
@Override
public String getHello() {
return hello1.getHello();
}
}
7行目は、コンストラクタです。
生成されたインスタンスを5行目の変数にセットします。
5.IHello
インターフェースです。
package com.example.demo;
public interface IHello {
public String getHello();
}
6.Hello
上記インターフェースを実装しています。
package com.example.demo;
public class Hello implements IHello {
@Override
public String getHello() {
return "Hello World!";
}
}
メソッドは、文字列のHello Worldを返します。
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>
関連の記事