- POJO์ Spring Framework
- Spring MVC์ Java Servlet
- Filter์ Interceptor
- Spring Application ๊ตฌ๋ ๋ฐฉ์
- ์์ฑ์ ์ฃผ์
- Spring Web MVC์ Controller ๊ด๋ฆฌ
- AOP ๊ฐ๋
1. POJO์ Spring Framework
POJO (Plain Old Java Object)
- ํน์ ํ๋ ์์ํฌ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ข ์๋์ง ์์ ์์ํ Java ๊ฐ์ฒด
- extends, implements๋ฅผ ํตํด ์์๋ฐ๊ฑฐ๋ ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ์ง ์๋ ๊ฐ๋จํ ํด๋์ค
- getter, setter, constructure, ๋ฉค๋ฒ ๋ณ์๋ฅผ ๊ฐ์ง
- ํน์ ๊ธฐ์ ์ ์์กดํ์ง ์์
- ๋จ์ํ๊ณ , ๊ฐ๋ ์ฑ์ด ์ข์
- ํ ์คํธ๊ฐ ์ฝ๊ณ ๋ค์ํ ํ๋ ์์ํฌ์์ ์ฌ์ฌ์ฉ์ด ๊ฐ๋ฅ
- ๊ฐ์ฒด์งํฅ์ ์ธ ์ค๊ณ๋ฅผ ์ ํ์์ด ์ ์ฉํ ์ ์๋ค
Spring framework์ POJO
- Spring Framework๋ POJO ํ๋ก๊ทธ๋๋ฐ์ ์งํฅํ๋ ํ๋ ์์ํฌ
- ๋ค๋ฅธ ํ๊ฒฝ์ด๋ ๊ธฐ์ ์ ์ข ์๋์ง ์๋๋ก IoC/DI, AOP๋ฑ ์ง์
- POJO๋ Spring์์ ๋๋ฉ์ธ ๋ชจ๋ธ์ด๋ ๋น์ฆ๋์ค ๋ก์ง์ด ๋ ์ ์์
2. Spring MVC์ Java Servlet
Java Servlet
- ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ์ฒ๋ฆฌํ๊ณ ์๋ต์ ์์ฑํ๊ธฐ ์ํ API
- Http ์์ฒญ์ด servlet ์ปจํ ์ด๋(tomcat)์ ๋๋ฌํ๋ฉด ์ปจํ ์ด๋๋ ์์ฒญ์ ํน์ servlet์ ๋งคํํ๊ณ servlet์ด ์์ฒญ์ ์ฒ๋ฆฌํ์ฌ ์๋ต ๋ฐํ
- http ์์ฒญ๊ณผ ์๋ต์ ์ง์ ๋ค๋ฃธ
- ๋จ์ํ ๊ตฌ์กฐ, ๊ธฐ๋ณธ์ ์ธ ์น ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์ ์ ํฉ
- ์์ฒญ ๋งคํ, ๋ฐ์ดํฐ ๋ณํ ๋ฑ์ ์์์ ์ผ๋ก ์ฒ๋ฆฌํด์ผ ํจ
- ์์์ ์ด๋ผ ๊ท๋ชจ๊ฐ ์ปค์ง๋ง ๋ณต์กํด์ง๊ณ , ํ์ฅ์ฑ์ด ๋ถ์กฑํด ์ ์ง๋ณด์๊ฐ ์ด๋ ค์
Spring MVC
- Model-View-Controller ํจํด์ ๊ธฐ๋ฐ์ผ๋ก ์น ์ ํ๋ฆฌ์ผ์ด์ ๊ตฌ์กฐํ
- Java Servlet์ ์์ ์ถ์ํ ๊ณ์ธต
- Servlet์ ๋ณต์กํ ์์ ์ ๊ฐ์ํํ๊ณ ์์ฐ์ฑ์ ๋์ฌ์ค
- DispatcherServlet : ๋ชจ๋ http ์์ฒญ์ ์ค์์์ ๊ด๋ฆฌ, ์ปจํธ๋กค๋ฌ์ ์์ฒญ ์์
- Annotation : @Controller, @RequestMapping๋ฑ์ผ๋ก ์์ฒญ ์ฒ๋ฆฌ
- ๋ค์ํ ๋ทฐ ํ ํ๋ฆฟ (thymeleaf, JSP)๊ณผ ํตํฉํ์ฌ ์ฌ์ฉ ๊ฐ๋ฅ
- ํ์ฅ์ฑ ์๋ ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ ์ง์
- Dispatcher servlet์ ํตํด ์์ฒญ์ ์ฒ๋ฆฌํ ์ปจํธ๋กค๋ฌ๋ฅผ ์ฐพ์์ ์์ํ๊ณ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ์์ค๋ ํํ
Question
Spring MVC์ ํต์ฌ ๊ตฌ์ฑ ์์?
Dispatcher servlet์ ์ค์ฌ์ผ๋ก ์๋ํ๋ฉฐ, ์ฃผ์ ๊ตฌ์ฑ์์๋ Handler Mapping, Handler Adapter, View Resolver๋ฑ์ผ๋ก ๊ตฌ์ฑ๋์ด ์์ต๋๋ค.
Question
Java Servlet๊ณผ MVC์ ์ฐจ์ด์
Java Servlet์ Http ์์ฒญ๊ณผ ์๋ต์ ์ฒ๋ฆฌํ๋ ์ ์์ค API๋ก ๊ฐ๋ฐ์๊ฐ ์ง์ ์์ฒญ์ ํ์ฑํ๊ณ ์๋ต์ ์์ฑํ๊ณ , ์ค์ ์ ์ง์ ๊ด๋ฆฌํด์ผ ํฉ๋๋ค. Spring MVC๋ ์ด๋ฌํ servlet๊ธฐ๋ฅ์ ์ถ์ํํ์ฌ ์ ๊ณตํฉ๋๋ค. ์๋ฅผ๋ค์ด Request Mapping์ ํตํด URL ๋งคํ์ ์ง์ํ๊ณ , ์๋ต์ ๋ทฐ ํ ํ๋ฆฟ ์์ง์ ์ฌ์ฉํด ์์ฑํฉ๋๋ค. Spring MVC๋ DI์ AOP๋ฅผ ํ์ฉํ์ฌ ์์ฐ์ฑ๊ณผ ์ ์ง๋ณด์์ฑ์ ํฅ์์ํต๋๋ค.
Question
Spring MVC์์ ์์ธ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ?
Exception Handler๋ฅผ ์ฌ์ฉํด ํน์ ์์ธ๋ฅผ ์ฒ๋ฆฌํ๊ฑฐ๋ Controller Advice๋ฅผ ์ฌ์ฉํด ์ ํ๋ฆฌ์ผ์ด์ ์ ์ญ์์ ๋ฐ์ํ๋ ์์ธ๋ฅผ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.
Question
Servlet ํํฐ์ Spring Interceptor ์ฐจ์ด์
Servlet ํํฐ๋ Java์ ํ์ค ๊ธฐ๋ฅ์ผ๋ก ์์ฒญ๊ณผ ์๋ต์ ์ฒ๋ฆฌํ๊ธฐ ์ ์ ์๋ธ๋ฆฟ ์ปจํ ์ด๋ ์์ค์์ ์๋ํ๋ฉฐ, Spring Interceptor๋ Spring MVC ์์ฒญ์์ Dispatcher servlet ์ดํ์ ์ปจํธ๋กค๋ฌ ์คํ ์ ํ์ ์๋ํฉ๋๋ค.
3. Filter์ Interceptor
์น ์ ํ๋ฆฌ์ผ์ด์ ์์ ์์ฒญ๊ณผ ์๋ต์ ์ฒ๋ฆฌํ๋ ๊ณตํต์ ์ธ ์์ ์ ์ํํ๋ ๊ตฌ์ฑ ์์
Filter
- ์์ฒญ์ด Dispatcher Servlet์ ๋๋ฌํ๊ธฐ ์ ์ ์๋ต์ด ํด๋ผ์ด์ธํธ๋ก ๋ฐํ๋๊ธฐ ์ ์ ์ฒ๋ฆฌ
- ์ ์ฒด ์์ฒญ/์๋ต์ ๋ํด ์ ์ญ์ ์ผ๋ก ์ฌ์ฉ
- ์ฃผ๋ก ์์ฒญ ์ ์ฒ๋ฆฌ, ์๋ต ํ์ฒ๋ฆฌ, ๋ณด์, ๋ก๊น ๋ฑ์ ์ฒ๋ฆฌ
Interceptor
- ์์ฒญ์ด Dispatcher servlet์ ๋๋ฌํ ํ์, ์ปจํธ๋กค๋ฌ ์คํ ์ ํ์ ์คํ
- Spring MVC์ ์์ฒญ ์ฒ๋ฆฌ ํ๋ฆ์ ๋ง์ถฐ ์ฌ์ฉ
- ์ปจํธ๋กค๋ฌ ์คํ ์ ํ ์ถ๊ฐ์์ ์ด ํ์ํ ๋ ์ฌ์ฉ
Question
Filter์ Interceptor์ ์ฐจ์ด์
filter์ interceptor๋ ์์ฒญ๊ณผ ์๋ต์ ์ฒ๋ฆฌํ ๋ ๊ณตํต์ ์ธ ์์ ์ ์ํํ๋ ๊ตฌ์ฑ ์์์ ๋๋ค. filter๋ ์์ฒญ์ด dispatcher servlet์ ๋๋ฌํ๊ธฐ ์ ๊ณผ ์๋ต์ด ํด๋ผ์ด์ธํธ์ ๋ฐํ๋๊ธฐ ์ ์ ์ฒ๋ฆฌ๋๋ฉฐ ์ ์ฒด์ ์ธ ์์ฒญ๊ณผ ์๋ต์ ์ ์ญ์ ์ผ๋ก ์ฌ์ฉ๋ฉ๋๋ค. Interceptor๋ ์์ฒญ์ด Dispathcer servlet์ ๋๋ฌํ ํ ์ปจํธ๋กค๋ฌ ์คํ ์ ํ์ ์คํ๋์ด Spring MVC์ ์์ฒญ ์ฒ๋ฆฌ ํ๋ฆ์ ๋ง์ถฐ ์ฌ์ฉ๋ฉ๋๋ค. filter๋ ์ฃผ๋ก ๋ณด์์ด๋ ๋ก๊น , ์์ฒญ ํํฐ๋ง์ ์ํด ์ฌ์ฉ๋๋ฉฐ interceptor๋ ๊ถํ ์ฒดํฌ๋ ์ปจํธ๋กค๋ฌ ์ ํ์์ ์ ์ฌ์ฉ๋ฉ๋๋ค.
5. ์์ฑ์ ์ฃผ์
์์กด์ฑ๊ณผ ์ค์ ๊ฐ์ ์์ฑ์ ์ธ์๋ก ์ฃผ์ ํด์ผ ํ๋ ์ด์ ์ ๋ํด ์ค๋ช ํด์ฃผ์ธ์
๋ถ๋ณ์ฑ ๋ณด์ฅ
- ์์ฑ์ ์ฃผ์ ์ ์ฌ์ฉํ๋ฉด ํด๋์ค ํ๋๋ฅผ ๋ถ๋ณ ์ํ๋ก ์ ์ง ๊ฐ๋ฅ
- final ํค์๋๋ฅผ ์ฌ์ฉํ์ฌ ์ด๊ธฐํ ์์๋ง ๊ฐ์ ์ค์ ํ๊ณ ์ดํ์ ๊ฐ์ ๋ณ๊ฒฝํ ์ ์๋๋ก ํจ
- ์ฝ๋์ ์์ธก ๊ฐ๋ฅ์ฑ๊ณผ ์์ ์ฑ ๋์
์์กด์ฑ ์ฃผ์ ์ ๋ช ์ํ
- ํด๋์ค๊ฐ ์ด๋ค ์์กด์ฑ์ ์์กดํ๋์ง ๋ช ํํ ๋ณด์ฌ์ค
- ๊ฐ๋ ์ฑ์ ๋์ด๊ณ ์ฝ๋๋ฅผ ์ดํดํ๊ธฐ ์ฝ๊ฒ ๋ง๋ฌ
ํ ์คํธ ์ฉ์ด์ฑ
- ํ ์คํธ ์ ์์กด์ฑ ์ฃผ์ ์ ์ฝ๊ฒ ํ ์ ์์
- ํ ์คํธ๊ฐ ์ฉ์ดํด์ง
๊ฒฐํฉ๋ ๊ฐ์, ์ํ ์ฐธ์กฐ ๋ฐฉ์ง ๋ฑ๋ฑ
Question
Spring์์ ์์ฑ์ ์ฃผ์ ์ ์ฌ์ฉํด์ผ ํ๋ ์ด์ ?
์์ฑ์ ์ฃผ์ ์ ์์กด์ฑ์ ๋ช ํํ ๋๋ฌ๋ด๋ฉฐ ๊ฐ์ฒด๊ฐ ๋ถ๋ณ์ฑ์ ์ ์งํ๋๋ก ๋ณด์ฅํฉ๋๋ค. ๋ํ ์ํ ์ฐธ์กฐ ๋ฌธ์ ๋ฅผ ๋ฐฉ์งํ ์ ์๊ณ , ๋จ์ ํ ์คํธ์ ๋ชจ์ ๊ฐ์ฒด๋ฅผ ์ฝ๊ฒ ์ฃผ์ ํ ์ ์์ด ํ ์คํธ ์ฉ์ด์ฑ์ด ๋ฐ์ด๋ฉ๋๋ค.
6. Spring Web MVC์ Controller ๊ด๋ฆฌ
Controller
- Http ์์ฒญ์ ๋ฐ์ ์ฒ๋ฆฌํ๊ณ , ๋ชจ๋ธ ๋ฐ์ดํฐ๋ฅผ ์์ฑํ์ฌ ๋ทฐ๋ฅผ ๋ฐํํ๋ ์ญํ
- @Controller, @RestController๋ฅผ ์ฌ์ฉํ์ฌ Spring Bean์ผ๋ก ์ ์
- ์์ฒญ์ ์ฒ๋ฆฌํ๋ ๋ฉ์๋๋ @RequestMapping, @GetMapping, @PostMapping๋ฑ์ ์ด๋ ธํ ์ด์ ์ ์ฌ์ฉํด ๋งคํ
Question
Spring Web MVC์์ Controller์ ์ญํ ์ ๋ฌด์์ธ๊ฐ์?
์ฌ์ฉ์๊ฐ ์น ์ ํ๋ฆฌ์ผ์ด์ ์์ ์์ฒญ์ ๋ณด๋ผ ๋ ์ด๋ฅผ ๋ฐ์์ ์ฒ๋ฆฌํ๋ ์ญํ ์ ํฉ๋๋ค. ์์ฒญ์ ์ ์ ํ ์๋น์ค ๋ ์ด์ด๋ก ์ ๋ฌํ๊ณ , ๊ฒฐ๊ณผ๋ฅผ ๋ชจ๋ธ์ ๋ด์ ๋ทฐ๋ฅผ ๋ฐํํฉ๋๋ค.
Question
Spring MVC์์ Controller ์ฒ๋ฆฌ ๋ฐฉ์
Dispatcher Servlet์ด ์์ฒญ์ ๋ฐ์ ์ฒ๋ฆฌํ ์ ํฉํ Controller๋ก ์ ๋ฌํฉ๋๋ค. ์ดํ Controller๋ ์์ฒญ์ ๋ง๋ ๋น์ฆ๋์ค ๋ก์ง์ ์ํํ๊ณ ๊ฒฐ๊ณผ๋ฅผ ๋ชจ๋ธ์ ๋ด์ View๋ก ์ ๋ฌํฉ๋๋ค. View๋ ๋ฐ์ดํฐ๋ฅผ ๋ ๋๋งํ์ฌ ํด๋ผ์ด์ธํธ์๊ฒ ์๋ต์ ๋ฐํํฉ๋๋ค.
Question
@Controlle์ @RestController์ฐจ์ด
@Controller๋ ๋ทฐ๋ฅผ ๋ฐํํ๋ ์ปจํธ๋กค๋ฌ ํด๋์ค๋ฅผ ์ ์ํ ๋ ์ฌ์ฉ๋ฉ๋๋ค. ๋ณดํต JSP๋ Thymeleaf๋ฅผ ํตํด HTML ์๋ต์ ๋ฐํํฉ๋๋ค. @RestController๋ @Controller์ @ResponseBody๊ฐ ๊ฒฐํฉ๋ ํํ๋ก ๋ทฐ๋ฅผ ๋ฐํํ๋ ๋์ ๋ฐ์ดํฐ๋ฅผ ๋ฐ๋ก ํด๋ผ์ด์ธํธ์ ๋ฐํํฉ๋๋ค. ์ฃผ๋ก JSON์ด๋ XML ํํ์ ๋ฐ์ดํฐ๋ฅผ ๋ฐํํฉ๋๋ค.
Question
@RequestMapping, @GetMapping, @PostMapping์ ์ฐจ์ด์ ์ ๋ฌด์์ธ๊ฐ์?
@RequestMapping : ๋ฉ์๋์ ์์ฒญ URL์ ๋งคํํ๋๋ฐ ์ฌ์ฉ @GetMapping : Http GET ์์ฒญ์ ์ฒ๋ฆฌํ๋ ๋ฉ์๋์ ์ฌ์ฉ, ์ฃผ๋ก ์กฐํ์ ์ฌ์ฉ๋จ @PostMapping : Http POST ์์ฒญ์ ์ฒ๋ฆฌํ๋ ๋ฉ์๋์ ์ฌ์ฉ, ์๋ก์ด ๋ฐ์ดํฐ๋ฅผ ์์ฑํ๊ฑฐ๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ถํ ๋ ์ฌ์ฉ
Controller Singleton Scope
- Controller๊ฐ์ฒด๋ ์ฑ๊ธํค์ผ๋ก ๊ด๋ฆฌ
- ์ ํ๋ฆฌ์ผ์ด์ ์ปจํ ์คํธ๊ฐ ์ด๊ธฐํ๋ ๋ Controller ๊ฐ์ฒด๋ฅผ ํ๋ฒ๋ง ์์ฑํ๊ณ , ์ดํ ๋ชจ๋ Http ์์ฒญ์ ๋์ผํ Controller ์ธ์คํด์ค๋ฅผ ์ฌ์ฉ
- ๊ฐ ์์ฒญ๋ง๋ค ๋ณ๋์ ์ค๋ ๋ ์ฌ์ฉ
- Controller๋ ์์ฒญ๋ง๋ค ๊ณต์ ๋์ง๋ง ๊ฐ๊ฐ์ ์์ฒญ์ ๋ ๋ฆฝ์ ์ธ ์ค๋ ๋์์ ์ฒ๋ฆฌ๋์ด ์ํ๊ฐ ๊ณต์ ๋์ง ์์
Question
Spring Web MVC์์ ์์ฒญ ๋ง๋ค Thread๊ฐ ์์ฑ๋์ด Controller๋ฅผ ํตํด ์์ฒญ์ ์ํํ ํ ๋ฐ, ์ด๋ป๊ฒ 1๊ฐ์ Controller๋ง ์์ฑ๋ ์ ์์๊น์?
Controller๋ ์ฑ๊ธํค์ผ๋ก ๊ด๋ฆฌ๋์ด์ ๊ฐ ์์ฒญ์ ๋์ผํ Controller ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ์ง๋ง ์์ฒญ๋ง๋ค ๋ ๋ฆฝ์ ์ธ ์ค๋ ๋์์ ์ฒ๋ฆฌ๋์ด ์ํ๊ฐ ๊ณต์ ๋์ง ์์ต๋๋ค.
7. AOP
Aspect-Oriented Programming
-
๊ด์ ์งํฅ ํ๋ก๊ทธ๋๋ฐ
-
๊ณตํต์ ์ธ ๊ด์ฌ์ฌ(๋ก๊น , ํธ๋์ญ์ ๊ด๋ฆฌ, ๋ณด์, ์ฑ๋ฅ ๋ชจ๋ํฐ๋ง)๋ฅผ ํต์ฌ ๋น์ฆ๋์ค ๋ก์ง๊ณผ ๋ถ๋ฆฌํ์ฌ ๊ด๋ฆฌ
-
๋ก์ง์ ํต์ฌ ๊ธฐ๋ฅ๊ณผ ๋ถ๊ฐ ๊ธฐ๋ฅ์ ๊ด์ ์ผ๋ก ๋๋์ด์ ๋ณด๊ณ ๊ฐ๊ฐ์ ๋ชจ๋ํ ํ๋๊ฒ
-
์ผํ๋ชฐ๋ก ์๋ฅผ ๋ค๋ฉด ์ํ์ ๊ฒ์ํ๊ณ , ์ฅ๋ฐ๊ตฌ๋์ ๋ด๊ณ , ๊ฒฐ์ ํ๋ ๋ถ๋ถ์ ํต์ฌ์ ์ธ ๋น์ฆ๋์ค ๋ก์ง์ด๋ผ๊ณ ๋ณผ ์ ์๊ณ , ์ ์ ๋ณ๋ก ํํ์ด์ง์ ์ฒด๋ฅํ๋ ์๊ฐ์ ์ธก์ ํ๋ ๋ถ๋ถ์ ๋ถ๊ฐ ๊ธฐ๋ฅ์ ํด๋น
-
Join point : Aspect๊ฐ ์ ์ฉ๋ ์ ์๋ ์์
- @Around : ํต์ฌ๊ธฐ๋ฅ ์ํ ์ ๊ณผ ํ์ ์ด๋๋ฐ์ด์ค ๊ธฐ๋ฅ ์ํ
- @Before : ํต์ฌ๊ธฐ๋ฅ ํธ์ถ ์ ์ ์ํ
- @After : ํต์ฌ๊ธฐ๋ฅ ์ํ ์ฑ๊ณต/์คํจ ์ฌ๋ถ์ ์๊ด์์ด ์ธ์ ๋ ๋์
- @AfterReturning : ํต์ฌ๊ธฐ๋ฅ ํธ์ถ ์ฑ๊ณต ์ ์ํ
- @AfterThrowing : ํต์ฌ๊ธฐ๋ฅ ํธ์ถ ์คํจ ์ ์ํ
-
Advice : Aspect์ ๊ธฐ๋ฅ์ ์ ์ํ ๊ฒ
-
Point cut : Advice๋ฅผ ์ ์ฉํ ๋ฉ์๋ ๋ฒ์ ์ง์
Spring์์์ AOP
- ํ๋ก์ ๊ธฐ๋ฐ AOP
- ๋ฉ์๋ ์คํ ์ ํ ์์ ์ ์ํํ๋๋ฐ ์ฃผ๋ก ์ฌ์ฉ
- @Aspect ์ด๋ ธํ ์ด์ ์ฌ์ฉ
์ฅ๋จ์
- ๋น์ฆ๋์ค ๋ก์ง๊ณผ ๊ณตํต ๊ด์ฌ์ฌ ๋ถ๋ฆฌ ๊ฐ๋ฅ
- ์ ์ง๋ณด์ ์ฉ์ด
- ๋ณต์ก๋ ์ฆ๊ฐ
- ์ฝ๋์ ํ๋ฆ์ ์ถ์ ํ๊ธฐ ์ด๋ ค์ ๋๋ฒ๊น ์ด ์ด๋ ค์
Question
AOP๋ ๋ฌด์์ธ๊ฐ์?
AOP๋ ๊ด์ ์งํฅ ํ๋ก๊ทธ๋๋ฐ์ผ๋ก, ๋ก์ง์ ํต์ฌ ๊ธฐ๋ฅ๊ณผ ๋ถ๊ฐ ๊ธฐ๋ฅ์ ๊ด์ ์ผ๋ก ๋๋์ด ๋ชจ๋ํํ๋๊ฒ์ ๋๋ค. ์๋ฅผ ๋ค์ด ์ํ์ ๊ฒ์ํ๊ณ , ์ฅ๋ฐ๊ตฌ๋์ ๋ด๊ณ , ๊ฒฐ์ ํ๋ ๋ถ๋ถ์ ํต์ฌ์ ์ธ ๋น์ฆ๋์ค ๋ก์ง์ด๋ผ๊ณ ๋ณผ ์ ์๊ณ , ์ ์ ๋ณ๋ก ํํ์ด์ง์ ์ฒด๋ฅํ๋ ์๊ฐ์ ์ธก์ ํ๋ ๋ถ๋ถ์ ๋ถ๊ฐ๊ธฐ๋ฅ์ ํด๋นํฉ๋๋ค.
Question
Spring AOP์ ํต์ฌ ๊ฐ๋
๊ณตํต ๊ด์ฌ์ฌ๋ฅผ ๋ชจ๋ํํ Aspect, AOP๊ฐ ์ฌ์ฉ๋ ์ง์ ์ ์ ์ํ๋ Join Point, ์ค์ ๋์์ ์ ์ํ๋ Advice, Advice๊ฐ ์ ์ฉ๋ ์กฐ๊ฑด์ ์ ์ํ๋ Point Cut ์ ๋๋ค.
Question
Aspect์ Advice์ ์ฐจ์ด์
Aspect๋ ๊ณตํต ๊ด์ฌ์ฌ ๊ธฐ๋ฅ์ ๋ชจ๋ํํ ํด๋์ค๋ก ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ์ฝ๋๋ฅผ ์ ๊ณตํฉ๋๋ค. Advice๋ ์ค์ ๋ก ์ํํ ํ๋์ ์ ์ํ ๋ถ๋ถ์ผ๋ก ๋ฉ์๋ ์คํ ์ ํ ๋ก๊น , ํธ๋์ญ์ ๊ด๋ฆฌ ๋ฑ์ ์ํํ ์ ์์ต๋๋ค.
Question
AOP์์์ Join Point์ Pointcut์ ์ฐจ์ด๋ฅผ ์ค๋ช ํด์ฃผ์ธ์.
Join Point๋ AOP๊ฐ ์ ์ฉ๋ ์ ์๋ ์ง์ ์ ์๋ฏธํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ๋ฉ์๋ ์คํ, ์์ธ ์ฒ๋ฆฌ ๋ฑ์ ๋๋ค. Pointcut์ Join Point์์ Advice๊ฐ ์ ์ฉ๋ ์กฐ๊ฑด์ ์ ์ํ๋ ํํ์์ ๋๋ค. ์๋ฅผ ๋ค์ด, ํน์ ๋ฉ์๋๋ ํด๋์ค์ ๋ํด Advice๋ฅผ ์ ์ฉํ ์ ์์ต๋๋ค.