「Spring Boot」@RestControllerでクラスを持つクラスをJSONデータで返す

環境
Windows10 64bit
Spring Boot 2.6.2
Spring Tool Suite 4
JDK 11

説明
アノテーション@RestController
REST コントローラーに設定します。このアノテーションが設定されると、クラスが DI コンテナへの登録対象としてマークされます。
@Controller および @ResponseBody でアノテーションが付けられている便利なアノテーション。

使用例
1.Employeeクラスの定義(Employee.java)

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
package com.example.demo;
public class Employee {
// 年齢age
private int age;
// 名前username
private String username;
// 住所addr
private String addr;
//get setメソッド省略
}
package com.example.demo; public class Employee { // 年齢age private int age; // 名前username private String username; // 住所addr private String addr; //get setメソッド省略 }
package com.example.demo;

public class Employee {

      // 年齢age
      private int age;
      // 名前username
      private String username;
      // 住所addr
      private String addr;
      
      //get setメソッド省略
}

2.Employeeクラスを格納するクラスの定義(EmpLstManager.java)

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
package com.example.demo;
public class EmpLstManager {
String sno;
//Employeeクラスのインスタンスを格納
Employee emp;
public String getSno() {
return sno;
}
public void setSno(String sno) {
this.sno = sno;
}
public Employee getEmp() {
return emp;
}
public void setEmp(Employee emp) {
this.emp = emp;
}
}
package com.example.demo; public class EmpLstManager { String sno; //Employeeクラスのインスタンスを格納 Employee emp; public String getSno() { return sno; } public void setSno(String sno) { this.sno = sno; } public Employee getEmp() { return emp; } public void setEmp(Employee emp) { this.emp = emp; } }
package com.example.demo;

public class EmpLstManager {
      String sno;
      
      //Employeeクラスのインスタンスを格納
      Employee emp;

      public String getSno() {
            return sno;
      }

      public void setSno(String sno) {
            this.sno = sno;
      }

      public Employee getEmp() {
            return emp;
      }

      public void setEmp(Employee emp) {
            this.emp = emp;
      }

}

3.コントローラクラス処理コード(ListEmpController.java)

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
package com.example.demo;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class ListEmpController {
@GetMapping("/objget")
public EmpLstManager funA() {
// EmpLstManagerクラスのインスタンス生成
EmpLstManager elm = new EmpLstManager();
elm.setSno("1234");
//Employeeクラスのインスタンス生成
Employee emp = new Employee();
emp.setUsername("テスト 太郎");
emp.setAge(32);
emp.setAddr("東京新宿");
//Employeeのインスタンスを格納
elm.setEmp(emp);
//Employeeクラスを持つクラスを返す
return elm;
}
}
package com.example.demo; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class ListEmpController { @GetMapping("/objget") public EmpLstManager funA() { // EmpLstManagerクラスのインスタンス生成 EmpLstManager elm = new EmpLstManager(); elm.setSno("1234"); //Employeeクラスのインスタンス生成 Employee emp = new Employee(); emp.setUsername("テスト 太郎"); emp.setAge(32); emp.setAddr("東京新宿"); //Employeeのインスタンスを格納 elm.setEmp(emp); //Employeeクラスを持つクラスを返す return elm; } }
package com.example.demo;


import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class ListEmpController {

      @GetMapping("/objget")
      public EmpLstManager funA() {

            // EmpLstManagerクラスのインスタンス生成
            EmpLstManager elm = new EmpLstManager();
            elm.setSno("1234");
      
            //Employeeクラスのインスタンス生成
            Employee emp = new Employee();
            emp.setUsername("テスト 太郎");
            emp.setAge(32);
            emp.setAddr("東京新宿");
            
            //Employeeのインスタンスを格納
            elm.setEmp(emp);
            
            //Employeeクラスを持つクラスを返す
            return elm;

      }
}

4.プログラム実行
プロジェクトを右クリックして、「実行(R)」->「Spring Boot アノテーション」をクリックします
画面確認
ブラウザ画面で「http://127.0.0.1:8080/obj」getにアクセスすると、画面に以下の結果が表示されます
実行結果

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
{"sno":"1234",
"emp":{"age":32,
"username":"テスト 太郎",
"addr":"東京新宿"
}
}
{"sno":"1234", "emp":{"age":32, "username":"テスト 太郎", "addr":"東京新宿" } }
{"sno":"1234",
 "emp":{"age":32,
          "username":"テスト 太郎",
              "addr":"東京新宿"
              }
}

 

Spring Boot

Posted by arkgame