「Spring Boot」@RestControllerでリスト(List)があるクラスを返す
環境
Windows10 64bit
Spring Boot 2.6.2
Spring Tool Suite 4
JDK 11
説明
アノテーション@RestController
REST コントローラーに設定します。このアノテーションが設定されると、クラスが DI コンテナへの登録対象としてマークされます。
@Controller および @ResponseBody でアノテーションが付けられている便利なアノテーション。
使用例
1.Employeeクラスの定義(Employee.java)
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.リストがあるクラスを定義する(EmpLstManager.java)
import java.util.List;
public class EmpLstManager {
String sno;
// リストでEmployeeクラスのインスタンス
List<Employee> empLst;
public String getSno() {
return sno;
}
public void setSno(String sno) {
this.sno = sno;
}
public List<Employee> getEmpLst() {
return empLst;
}
public void setEmpLst(List<Employee> empLst) {
this.empLst = empLst;
}
}
import java.util.List;
public class EmpLstManager {
String sno;
// リストでEmployeeクラスのインスタンス
List<Employee> empLst;
public String getSno() {
return sno;
}
public void setSno(String sno) {
this.sno = sno;
}
public List<Employee> getEmpLst() {
return empLst;
}
public void setEmpLst(List<Employee> empLst) {
this.empLst = empLst;
}
}
import java.util.List; public class EmpLstManager { String sno; // リストでEmployeeクラスのインスタンス List<Employee> empLst; public String getSno() { return sno; } public void setSno(String sno) { this.sno = sno; } public List<Employee> getEmpLst() { return empLst; } public void setEmpLst(List<Employee> empLst) { this.empLst = empLst; } }
3.コントローラクラスの処理コード(ListEmpController.java)
package com.example.demo;
import java.util.ArrayList;
import java.util.List;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class ListEmpController {
@GetMapping("/listobj")
public EmpLstManager funA() {
// EmpLstManagerクラスのインスタンス生成
EmpLstManager elm = new EmpLstManager();
elm.setSno("1001");
// EmployeeクラスのインスタンスcftA生成
Employee cftA = new Employee();
cftA.setAge(25);
cftA.setAddr("東京");
cftA.setUsername("山田 太郎");
// EmployeeクラスのインスタンスcftB生成
Employee cftB = new Employee();
cftB.setAge(35);
cftB.setAddr("大阪");
cftB.setUsername("山城 二郎");
//リストがあるクラス生成
List<Employee> lstEmp = new ArrayList<>();
lstEmp.add(cftA);
lstEmp.add(cftB);
elm.setEmpLst(lstEmp);
//リストがあるクラスを返す
return elm;
}
}
package com.example.demo;
import java.util.ArrayList;
import java.util.List;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class ListEmpController {
@GetMapping("/listobj")
public EmpLstManager funA() {
// EmpLstManagerクラスのインスタンス生成
EmpLstManager elm = new EmpLstManager();
elm.setSno("1001");
// EmployeeクラスのインスタンスcftA生成
Employee cftA = new Employee();
cftA.setAge(25);
cftA.setAddr("東京");
cftA.setUsername("山田 太郎");
// EmployeeクラスのインスタンスcftB生成
Employee cftB = new Employee();
cftB.setAge(35);
cftB.setAddr("大阪");
cftB.setUsername("山城 二郎");
//リストがあるクラス生成
List<Employee> lstEmp = new ArrayList<>();
lstEmp.add(cftA);
lstEmp.add(cftB);
elm.setEmpLst(lstEmp);
//リストがあるクラスを返す
return elm;
}
}
package com.example.demo; import java.util.ArrayList; import java.util.List; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class ListEmpController { @GetMapping("/listobj") public EmpLstManager funA() { // EmpLstManagerクラスのインスタンス生成 EmpLstManager elm = new EmpLstManager(); elm.setSno("1001"); // EmployeeクラスのインスタンスcftA生成 Employee cftA = new Employee(); cftA.setAge(25); cftA.setAddr("東京"); cftA.setUsername("山田 太郎"); // EmployeeクラスのインスタンスcftB生成 Employee cftB = new Employee(); cftB.setAge(35); cftB.setAddr("大阪"); cftB.setUsername("山城 二郎"); //リストがあるクラス生成 List<Employee> lstEmp = new ArrayList<>(); lstEmp.add(cftA); lstEmp.add(cftB); elm.setEmpLst(lstEmp); //リストがあるクラスを返す return elm; } }
4.プログラム実行
プロジェクトを右クリックして、「実行(R)」->「Spring Boot アノテーション」をクリックします
画面確認
ブラウザ画面で「http://127.0.0.1:8080/listobj」にアクセスすると、画面に以下の結果が表示されます.
実行結果
{
"sno" :"1001"
, "empLst" :[
{"age":25,"
username":"山田 太郎","
addr":"東京"
},
{"age":35,
"username":"山城 二郎",
"addr":"大阪"
}]
}
{
"sno" :"1001"
, "empLst" :[
{"age":25,"
username":"山田 太郎","
addr":"東京"
},
{"age":35,
"username":"山城 二郎",
"addr":"大阪"
}]
}
{ "sno" :"1001" , "empLst" :[ {"age":25," username":"山田 太郎"," addr":"東京" }, {"age":35, "username":"山城 二郎", "addr":"大阪" }] }