๐[Spring] @ModelAttribute
์ ๋
ธํ
์ด์
.
1๏ธโฃ @ModelAttribute
-
@ModelAttribute
๋ Spring Framework์์ ์ฃผ๋ก ์ฌ์ฉ๋๋ ์ ๋ ธํ ์ด์ ์ผ๋ก, Spring MVC์์ ๋ชจ๋ธ ๋ฐ์ดํฐ์ ์์ฒญ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ธ๋ฉํ๊ฑฐ๋, ์ปจํธ๋กค๋ฌ์์ ๋ฐํ๋ ๋ฐ์ดํฐ๋ฅผ ๋ทฐ์ ์ ๋นํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. -
@ModelAttribute
๋ ๋ ๊ฐ์ง ์ฃผ์ ์ฉ๋๋ก ์ฌ์ฉ๋ฉ๋๋ค.
1๏ธโฃ ๋ฉ์๋ ํ๋ผ๋ฏธํฐ์์ ์ฌ์ฉ(@ModelAttribute
ํ๋ผ๋ฏธํฐ ๋ฐ์ธ๋ฉ)
-
@ModelAttribute
๋ฅผ ๋ฉ์๋ ํ๋ผ๋ฏธํฐ์ ์ ์ฉํ๋ฉด, Spring์ ์์ฒญ ํ๋ผ๋ฏธํฐ ๋๋ ํผ ๋ฐ์ดํฐ๋ก๋ถํฐ ๊ฐ์ฒด๋ฅผ ์๋์ผ๋ก ์์ฑํ๊ณ , ๊ทธ ๊ฐ์ฒด์ ํ๋๋ฅผ ์์ฒญ ํ๋ผ๋ฏธํฐ ๊ฐ์ผ๋ก ๋ฐ์ธ๋ฉํฉ๋๋ค.- ์ด๋ ๊ฒ ์์ฑ๋ ๊ฐ์ฒด๋ ์ปจํธ๋กค๋ฌ ๋ฉ์๋ ๋ด๋ถ์์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์์.
@Controller
public class UserController {
@PostMapping("/register")
public String registerUser(@ModelAttribute User user) {
// User ๊ฐ์ฒด๋ ํผ ๋ฐ์ดํฐ๋ก๋ถํฐ ์๋์ผ๋ก ์์ฑ๋๊ณ ๋ฐ์ธ๋ฉ๋ฉ๋๋ค.
// ์ด์ user ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
System.out.println("User Name: " + user.getName());
return "registrationSuccess";
}
}
- ์ ์์์์
@ModelAttribute
๋User
๊ฐ์ฒด๋ฅผ ํผ ๋ฐ์ดํฐ๋ก๋ถํฐ ์์ฑํ๊ณ ,name
,email
๋ฑ์ ํ๋ ์์ฒญ ํ๋ผ๋ฏธํฐ ๊ฐ์ผ๋ก ๋ฐ์ธ๋ฉํฉ๋๋ค.
2๏ธโฃ ๋ฉ์๋์ ์ฌ์ฉ(@ModelAttribute
๋ฉ์๋)
-
@ModelAttribute
๋ฅผ ๋ฉ์๋ ๋ ๋ฒจ์ ์ ์ฉํ๋ฉด, ํด๋น ๋ฉ์๋๋ ์ปจํธ๋กค๋ฌ์ ๋ชจ๋ ์์ฒญ ์ ์ ์คํ๋์ด, ๋ฐํ๋ ๊ฐ์ฒด๋ฅผ ๋ชจ๋ธ์ ์ถ๊ฐํฉ๋๋ค.- ์ด ๊ฐ์ฒด๋ ์ดํ ๋ทฐ์์ ์ฌ์ฉ๋ ์ ์์ต๋๋ค.
```java
@Controller
public class UserController {
@ModelAttribute(โuserTypesโ)
public ListpopulateUserTypes() { // ์ด ๋ฉ์๋๋ ์ปจํธ๋กค๋ฌ์ ๋ชจ๋ ์์ฒญ ์ ์ ์คํ๋ฉ๋๋ค. // ์ด ๋ฆฌ์คํธ๋ ๋ชจ๋ธ์ ์ถ๊ฐ๋์ด ๋ทฐ์์ ์ฌ์ฉ๋ ์ ์์ต๋๋ค. return Arrays.asList("Admin", "User", "Guest"); } @GetMapping(โ/registerโ)
public String showRegistrationForm(Model model) {
model.addAttribute(โuserโ, new User());
return โregisterโ;
}
}
``` - ์ด ๊ฐ์ฒด๋ ์ดํ ๋ทฐ์์ ์ฌ์ฉ๋ ์ ์์ต๋๋ค.
- ์ ์์์์
populateUserTypes()
๋ฉ์๋๋@ModelAttribute("userTypes")
๋ก ์ ์ธ๋์ด, ์ด ๋ฉ์๋๊ฐ ๋ฐํํ๋ ๋ฆฌ์คํธ๋userTypes
๋ผ๋ ์ด๋ฆ์ผ๋ก ๋ชจ๋ธ์ ์ถ๊ฐ๋ฉ๋๋ค.- ์ด ๊ฐ์ ๋ทฐ(์: JSP, Thymeleaf ํ ํ๋ฆฟ ๋ฑ)์์ ์ ๊ทผํ ์ ์์ต๋๋ค.
3๏ธโฃ @ModelAttribute
์ ์ฃผ์ ๊ธฐ๋ฅ ์์ฝ.
- 1. ํ๋ผ๋ฏธํฐ ๋ฐ์ธ๋ฉ : ํด๋ผ์ด์ธํธ์ ์์ฒญ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ฒด๋ก ๋ณํํ๊ณ , ์ด ๊ฐ์ฒด๋ฅผ ์ปจํธ๋กค๋ฌ ๋ฉ์๋์์ ์ฌ์ฉํ๋๋ก ํด์ค๋๋ค.
-
2. ๋ชจ๋ธ ์ถ๊ฐ : ๋ฉ์๋์ ๋ฐํ ๊ฐ์ ๋ชจ๋ธ์ ์ถ๊ฐํ์ฌ, ํด๋น ๋ฐ์ดํฐ๊ฐ ๋ชจ๋ ๋ทฐ์์ ์ฌ์ฉ๋ ์ ์๋๋ก ํฉ๋๋ค.
- ์ด ๋๊ฐ์ง ๊ธฐ๋ฅ์ ํตํด
@ModelAttribute
๋ Spring MVC์์ ๋ฐ์ดํฐ ๋ฐ์ธ๋ฉ๊ณผ ๋ทฐ์ ์ ๋น๋๋ ๋ฐ์ดํฐ์ ๊ด๋ฆฌ๋ฅผ ๊ฐ์ํํ๋ ๋ฐ ์ค์ํ ์ญํ ์ ํฉ๋๋ค.
- ์ด ๋๊ฐ์ง ๊ธฐ๋ฅ์ ํตํด