π[Spring] Controllerμμ getterκ° μλ κ°μ²΄λ₯Ό λ°ννλ©΄ JSONμ΄ λλ€?!
-
Controllerμμ getterκ° μλ κ°μ²΄λ₯Ό λ°ννλ©΄ κΈ°λ³Έμ μΌλ‘ JSONμΌλ‘ λ³νλμ΄ ν΄λΌμ΄μΈνΈμ μ λ¬λ©λλ€.
- μ΄ λμμ Spring Frameworkμμ μλμΌλ‘ μ²λ¦¬ν΄μ€λλ€.
1οΈβ£ Springμμ κ°μ²΄κ° JSONμΌλ‘ λ³νλλ κ³Όμ .
1. κ°μ²΄ λ°ν λ° @RestController
- Springμμλ
@RestController
λλ@ResponseBody
μ λν μ΄μ μ΄ λΆμ λ©μλκ° κ°μ²΄λ₯Ό λ°ννλ©΄, ν΄λΉ κ°μ²΄λ μλμΌλ‘ JSON νμμΌλ‘ λ³νλμ΄ ν΄λΌμ΄μΈνΈμ μ λ¬λ©λλ€. - Springμ λ΄λΆμ μΌλ‘ Jacksonμ΄λΌλ λΌμ΄λΈλ¬λ¦¬λ₯Ό μ¬μ©νμ¬ Java κ°μ²΄λ₯Ό JSONμΌλ‘ μ§λ ¬νν©λλ€.
- μ΄ κ³Όμ μμ κ°μ²΄μ getter λ©μλλ₯Ό ν΅ν΄ λ°μ΄ν°λ₯Ό μΆμΆνλ € JSONμ μμ±ν©λλ€.
2. Jacksonμ μν μ§λ ¬ν.
- Spring Bootλ Jacksonμ κΈ°λ³ΈμΌλ‘ ν¬ν¨νκ³ μμ΄, μΆκ°μ μΈ μ€μ μμ΄ Java κ°μ²΄λ₯Ό JSONμΌλ‘ λ³νν μ μμ΅λλ€.
- κ°μ²΄μ getter λ©μλλ₯Ό ν΅ν΄ κ°μ²΄ λ΄λΆμ λ°μ΄ν°λ₯Ό μΆμΆνκ³ , μ΄λ₯Ό JSONμΌλ‘ λ³νν©λλ€.
- μλ₯Ό λ€μ΄,
getName()
μ΄λΌλ getterκ° μμΌλ©΄, μ΄λname
μ΄λΌλ νλλ‘ JSONμ ν¬ν¨λ©λλ€.
2οΈβ£ μμ.
1. κ°μ²΄ ν΄λμ€.
public class User {
private Long id;
private String name;
private String email;
// κΈ°λ³Έ μμ±μ
public User() {}
// Getterμ Setter
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
2. Controller ν΄λμ€.
@RestController
@RequestMapping("/users")
public class UserController {
@GetMapping("/{id}")
public User getUserById(@PathVariable Long id) {
// User κ°μ²΄λ₯Ό μμ±νκ³ λ°ν (μΌλ°μ μΌλ‘λ λ°μ΄ν°λ² μ΄μ€μμ κ°μ Έμ΄)
User user = new User();
user.setId(id);
user.setName("Kobe");
user.setEmail("kobe@example.com");
// μ΄ κ°μ²΄λ μλμΌλ‘ JSON νμμΌλ‘ λ³νλμ΄ ν΄λΌμ΄μΈνΈμ λ°νλ¨.
return user;
}
}
3οΈβ£ λμ μ리.
1. ν΄λΌμ΄μΈνΈ μμ².
- ν΄λΌμ΄μΈνΈ
/users/1
κ³Ό κ°μ΄ μμ²μ 보λ΄λ©΄, Springμ ν΄λΉ κ²½λ‘μ λ§€νλgetUserById
λ©μλλ₯Ό νΈμΆν©λλ€.
2. Java κ°μ²΄ λ°ν.
- μ΄ λ©μλλ
User
κ°μ²΄λ₯Ό λ°νν©λλ€.
3. κ°μ²΄λ₯Ό JSONμΌλ‘ λ³ν.
- Springμ
@RestController
λλ@ResponseBody
λ₯Ό λ³΄κ³ ,User
κ°μ²΄λ₯Ό JSON νμμΌλ‘ λ³νν©λλ€. - μ΄λ Jackson λΌμ΄λΈλ¬λ¦¬κ° getter λ©μλλ€μ μ¬μ©νμ¬ κ°μ²΄ λ΄λΆμ κ°μ μΆμΆνκ³ , μ΄λ₯Ό JSONμΌλ‘ μ§λ ¬νν©λλ€.
πββοΈ λΌμ΄λΈλ¬λ¦¬μ νλ μμν¬μ μ°¨μ΄μ
4. ν΄λΌμ΄μΈνΈμ JSON μλ΅.
- μ§λ ¬νλ JSON λ°μ΄ν°κ° ν΄λΌμ΄μΈνΈμ μλ΅μΌλ‘ μ μ‘λ©λλ€.
κ²°κ³Όλ‘ ν΄λΌμ΄μΈνΈκ° λ°λ JSON
{
"id": 1,
"name": "Kobe",
"email": "kobe@example.com"
}
4οΈβ£ μ£Όμ μ¬ν.
-
κ°μ²΄μ getterκ° μμ΄μΌ ν¨.
- Jacksonμ κ°μ²΄μ νλλ₯Ό μ§μ μ κ·Όνλ κ²μ΄ μλλΌ, κΈ°λ³Έμ μΌλ‘ getter λ©μλλ₯Ό μ¬μ©νμ¬ λ°μ΄ν°λ₯Ό μΆμΆν©λλ€.
- λ°λΌμ getter λ©μλκ° μ‘΄μ¬ν΄μΌ ν©λλ€.
-
κ°μ²΄κ° nullμΈ κ²½μ°.
- κ°μ²΄κ° nullμ΄κ±°λ, νΉμ νλκ° nullμΈ κ²½μ° κ·Έ νλλ JSONμ ν¬ν¨λμ§ μκ±°λ nullλ‘ ννλ©λλ€.
-
μΆκ° μ€μ .
- νμμ λ°λΌ Jacksonμ μ§λ ¬ν/μμ§λ ¬ν λ°©μμ 컀μ€ν°λ§μ΄μ§ν μ μμ΅λλ€.
- μλ₯Ό λ€μ΄, νλ μ΄λ¦μ λ³κ²½νκ±°λ νΉμ νλλ₯Ό μ μΈνκ³ μΆμ λλ
@JsonProperty
,@JsonIgnore
κ°μ Jackson μ λν μ΄μ μ μ¬μ©ν μ μμ΅λλ€.
5οΈβ£ μμ½.
- Java λ°±μλ μ ν리μΌμ΄μ μμ κ³μΈ΅ν μν€ν μ²λ‘ ꡬνν ν Controllerμμ getterκ° μλ κ°μ²΄λ₯Ό λ°ννλ©΄, Springμ ν΄λΉ κ°μ²΄λ₯Ό μλμΌλ‘ JSON νμμΌλ‘ λ³ννμ¬ ν΄λΌμ΄μΈνΈμ μλ΅ν©λλ€.
- μ΄λ κΈ°λ³Έμ μΌλ‘ Springμ Jackson λΌμ΄λΈλ¬λ¦¬λ₯Ό ν΅ν΄ μ΄λ£¨μ΄μ§λ©°, μΆκ°μ μΈ μ€μ μμ΄λ κ°μ²΄μ getterλ₯Ό ν΅ν΄ JSONμΌλ‘ μ§λ ¬νλ©λλ€.