「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)
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)
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)
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にアクセスすると、画面に以下の結果が表示されます
実行結果
{"sno":"1234",
"emp":{"age":32,
"username":"テスト 太郎",
"addr":"東京新宿"
}
}
{"sno":"1234",
"emp":{"age":32,
"username":"テスト 太郎",
"addr":"東京新宿"
}
}
{"sno":"1234", "emp":{"age":32, "username":"テスト 太郎", "addr":"東京新宿" } }