SpringBoot 2.6にDIでコンストラクタインジェクションを行うサンプル
環境
Windows10 64bit
Spring Boot 2.6.2
Spring Tool Suite 4
JDK 11
説明
@Component
インスタンスを Spring 管理下に置くため、クラスに付けるアノテーション。
@Autowired
Spring 管理下のオブジェクトの中から、適切なものを変数に自動でセットしてもらうため、インスタンス変数に付けるアノテーションです。
@RestController
JsonやXML等を返すWebAPI用のコントローラで使用します。
Viewに遷移しないのでメソッドの戻り値はレスポンスのコンテンツになります。
書式
@Autowired
public Controllerコンストラクタ名(クラス名 変数名) {
処理コード
}
使用例
1.Controllerクラスの定義
package com.example.demo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class CftController { //UserServiceのインスタンス private final UserService user; //コンストラクタ @Autowired public CftController(UserService user) { // 変数にインスタンスをセット this.user = user; } @GetMapping("/cft2") public String funA () { //インスタンスのメソッドを呼び出す return user.getAddr(); } }
2.UserService.javaの定義
package com.example.demo; import org.springframework.stereotype.Component; @Component public class UserService { public String getAddr() { return "東京tokyo"; } }
3.プロジェクトを右クリックして、「実行(R)」->「Spring Boot アノテーション」をクリックします
4.動作確認
http://127.0.0.1:8080/cft2
画面に「東京tokyo」が表示されます