Spring Java Configでコンストラクタ

SpringのJava Configでコンストラクタを行うサンプルです。
(確認環境:Spring 5.3.7、JDK 11、STS 4)

目次

サンプル Spring Java Configでコンストラクタを行う
  1.起動するファイル(StartApplication.java)
  2.設定ファイル(TestConfig.java)
  3.beanとして使用(SyainService.java)
  実行する

Spring Java Configでコンストラクタを行う

処理の流れ

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

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

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

package com.example.test1;

import org.springframework.context.annotation.AnnotationConfigApplicationContext;

public class StartApplication {
	public static void main(String[] args) {
		AnnotationConfigApplicationContext context = 
				new AnnotationConfigApplicationContext(TestConfig.class);
		SyainService syain = context.getBean(SyainService.class);
		System.out.println(syain.getHello()); //Hello World!
		context.close();
	}
}

8行目は、TestConfig.javaを読み込みます。
9行目は、context.getBeanでbean(インスタンス)を取得しています。

2.設定ファイル(TestConfig.java)

package com.example.test1;

import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;

@Configuration
@ComponentScan("com.example.test1")
public class TestConfig {
	
}

@Configurationは、設定クラスであることを示しています。
@ComponentScanは、対象のパッケージ配下にある@Componentが付与されたクラスを探してBeanとしてDIコンテナに登録します。

3.beanとして使用(SyainService.java)

SyainService.java

package com.example.test1;

import org.springframework.stereotype.Component;

@Component
public class SyainService {
	private Hello hello;

	public SyainService(Hello hello) {
		this.hello = hello;
	}
	public String getHello() {
		return hello.getHello();
	}
}

9行目は、コンストラクタです。引数のコンポーネント(Hello.javaのインスタンス)は自動でDIされます。
9行目の上に@Autowiredを付加できますが、省略可能です。

コンストラクタで、複数クラスのどれかを判別する場合


	public SyainService(@Qualifier("hello") Hello hello) {
		this.hello = hello;
	}

コンストラクタの引数の先頭に@Qualifier("クラス名")を追加して区別します。
このときのクラス名の最初の文字は小文字にします。

Hello.java

package com.example.test1;

import org.springframework.stereotype.Component;

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

@Componentは、このクラスはBeanとしてDIコンテナに登録する対象であることを意味します。
メソッドは、文字列のHello Worldを返します。

実行する

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

関連の記事

Spring XMLでhello worldを表示
Spring XMLでコンストラクタを行う
Spring Java Configでhello world

△上に戻る