๐ก๏ธ Validation
Q1. @Valid
์ @Validated
์ ์ฐจ์ด๋ ๋ฌด์์ธ๊ฐ์?
๋ ์ด๋ค ์ํฉ์์ BindingResult
๊ฐ ๋ฐ๋์ ํจ๊ป ์ ์ธ๋์ด์ผ ํ๋์?
โ Valid ๋ ์ ํจ์ฑ ๊ฒ์ฌ๋ฅผ ํ ๊ฐ์ฒด ์์ ๋ถ์ด๊ณ , Validated ๋ ๊ทธ๋ฃน ์ง์ ์ด ํ์ํ ๊ฒฝ์ฐ์ ์ฌ์ฉํ๋ค. BindingResult ๋ ์ ํจ์ฑ ๊ฒ์ฌ ๊ฒฐ๊ณผ๋ฅผ ์ ์ฅํ๋ ๊ฐ์ฒด๋ก, ๊ฒฐ๊ณผ๋ ์๋ฌ๋ฅผ ํ์ํ๊ณ ์ถ์ ๋ ์ฌ์ฉํ๋ค.
โ ๏ธ ์์ธ ์ฒ๋ฆฌ
Q2. @ControllerAdvice
๋ฅผ ์ฌ์ฉํ๋ ์ด์ ๋ ๋ฌด์์ด๋ฉฐ, @ExceptionHandler
๋ฉ์๋๊ฐ ์ด๋ค ์กฐ๊ฑด์์ ํธ์ถ๋๋์ง ์ค๋ช
ํด๋ณด์ธ์.
โ ์คํ๋ง์์ ์ ์ญ์ ์ผ๋ก ๋ฐ์ํ๋ Runtime Exception์ ๋ค๋ฃจ๊ธฐ ์ํด ์ฌ์ฉํ๋ฉฐ, Controller ๋ Service ์์ ๋ฉ์๋๊ฐ ์์ธ์ ๋งคํ๋ ๋ ํธ์ถ๋๋ค.
Q3. ๋ค์ ์ฝ๋์ ๋ฌธ์ ์ ์ ์ฐพ์๋ณด์ธ์:
@ExceptionHandler(Exception.class)
public String handleAll(Exception ex) {
return "error";
}
โ Exception.class ๋ ๋๋ฌด ๋ฒ์ฉ์ ์ด๋ผ, ๋ค๋ฅธ ์ธ๋ถ ์์ธ๋ค์ ํธ๋ค๋ฌ๋ณด๋ค ์ฐ์ ์์๋ฅผ ๋บ์ ์ ์๋ค.
๐ Interceptor
Q4. Interceptor์ Filter์ ์ฐจ์ด์ ์ ๋ฌด์์ธ๊ฐ์? ๊ฐ๊ฐ์ ๋์ ์์ ๊ณผ ํ์ฉ ๋ชฉ์ ์ ๋น๊ตํด์ ์ค๋ช ํด๋ณด์ธ์.
โ Filter ๋ ํ๋ก์ ํธ์ ์ต์๋จ์์ ๋์ํ๋ค. ์ฆ, ์คํ๋ง ๋ฒ์ ๋ฐ์ธ DispatcherServlet ์ ์ /ํ๋ก ๋์ํ๋ค. ๋ฐ๋ผ์, Spring MVC์ ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์ ์๊ณ , Interceptor ๋ ์คํ๋ง ๋ฒ์ ๋ด์ธ Controller ์ ํธ์ถ ์ /ํ ๋ก ๋์ํ๋ค.
- Filter ๋ โHTTP ๊ธฐ๋ฐ ์ ์ฒด ํ๋ฆโ ์์ ์ฌ์ฉ
- Interceptor ๋ ์ธ์ ์ฒดํฌ, ์ฌ์ฉ์ ๊ถํ ๊ฒ์ฆ ๋ฑ โ์ปจํธ๋กค๋ฌโ ๋จ์์ ์ฌ์ฉ
Q5. HandlerInterceptor
์ preHandle()
๋ฉ์๋์์ false
๋ฅผ ๋ฐํํ๋ฉด ์ด๋ค ์ผ์ด ๋ฐ์ํ๋์?
โ ์ปจํธ๋กค๋ฌ ๋ฉ์๋๋ก ์์ฒญ์ด ์ ๋ฌ๋์ง ์์.
โ ์ดํ PostHandle()
๋ ํธ์ถ๋์ง ์์
โ ๋ณดํต ์ธ์ฆ ์คํจ, ์์ฒญ ์ฐจ๋จ ๋ฑ์ ์ฌ์ฉ