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」が表示されます

Spring Boot

Posted by arkgame