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