์๋ฒ ๊ฐ ํต์
- ์ด๋ค ํฌํธ ์ฌ์ดํธ๋ฅผ ํ๋์ ์๋น์ค ๋จ์๋ก ๊ฐ๋ฐํ๋ค๊ณ ๊ฐ์ .
- ์ฆ, ๋ธ๋ก๊ทธ, ์นดํ, ๋ฉ์ผ ๋ฑ์ ๊ธฐ๋ฅ๋ค์ ํ๋์ ์ ํ๋ฆฌ์ผ์ด์ ์ ํตํฉ
- ์ด๋ ๊ฒ ๊ตฌ์ฑํ๋ค๋ฉด ์๋ฒ๋ฅผ ์ ๋ฐ์ดํธํ๊ฑฐ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ์ง๋ณด์ํ ๋๋ง๋ค '์ฌ์ดํธ ์์ ์ค์ ๋๋ค.' ํป๋ง์ ๊ฑธ๊ณ ์์ ํด์ผํจ
- ๊ทธ๋งํผ ๊ฐ๋ฐ์ ๋ณด์์ ์ธ ์ ์ฅ์ ์ทจํ ์ ๋ฐ์ ์๊ณ , ์๋น์ค ์์ฒด์ ๊ท๋ชจ๋ ์ปค์ง๊ธฐ ๋๋ฌธ์ ์๋น์ค๋ฅผ ๊ตฌ๋ํ๋๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ๋ ๊ธธ์ด์ง
โ ์ด๋ฌํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ๊ฒ์ด ๋ง์ดํฌ๋ก์๋น์ค ์ํคํ
์ฒ(MSA; Microservice Architecture)
โ ์๋น์ค ๊ท๋ชจ๋ฅผ ์๊ฒ ๋๋์ด ๊ตฌ์ฑํ ์ํคํ
์ณ
- ์์ ์๋ก ๋ ํฌํธ ์ฌ์ดํธ์ ์ ์ฉํ๋ค๋ฉด, ์ ํ๋ฆฌ์ผ์ด์ ํ๋์ ์ฌ๋ฌ ๊ธฐ๋ฅ์ ๋ฃ์ด ๊ฐ๋ฐํ์ง ์๊ณ ๋ธ๋ก๊ทธ ํ๋ก์ ํธ, ์นดํ ํ๋ก์ ํธ, ๋ฉ์ผ ํ๋ก์ ํธ ๋ฑ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ธฐ๋ฅ๋ณ๋ก ๋๋ ์ ๊ฐ๋ฐํ๊ฒ ๋จ
๋จ์ผ ์๋น์ค๋ก ๊ตฌ์ฑ๋ A ํฌํธ ์ฌ์ดํธ๋ ๋ด๋ถ ๋ฉ์๋ ํธ์ถ ๋ฑ์ ํตํด ์ํ๋ ์์์ ๊ฐ์ ธ์ ์ฌ์ฉํ ์ ์์ง๋ง ์๋น์ค ๊ธฐ๋ฅ๋ณ๋ก ๊ตฌ๋ถํด์ B ํฌํธ ์ฌ์ดํธ์ ๊ฐ์ด ๋ ๋ฆฝ์ ์ธ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฐ๋ฐํ๊ฒ ๋๋ฉด ๊ฐ ์๋น์ค ๊ฐ์ ํต์ ํด์ผ ํ๋ ๊ฒฝ์ฐ๊ฐ ๋ฐ์ํจ
์๋ฅผ ๋ค์ด, ์ฌ์ฉ์๊ฐ ๋ธ๋ก๊ทธ ๊ธฐ๋ฅ์ ์ฌ์ฉํ๊ธฐ ์ํด ๋ก๊ทธ์ธ ์๋น์ค๋ฅผ ๊ฑฐ์ณ์ผ๋ง ํ๋ ์ํฉ๋ฑ์ด ์์
์ด๋ฐ ์ํฉ์์์ ํต์ ์ ์๋ฒ ๊ฐ ํต์
์ด๋ผ๊ณ ํจ
โ ์๋ฒ ๊ฐ ํต์ ์ ํ ์๋ฒ๊ฐ ๋ค๋ฅธ ์๋ฒ์ ํต์ ์ ์์ฒญํ๋ ๊ฒ์ ์๋ฏธํ๋ฉฐ, ํ ๋๋ ์๋ฒ, ๋ค๋ฅธ ํ ๋๋ ํด๋ผ์ด์ธํธ๊ฐ ๋๋ ๊ตฌ์กฐ
๋ช ๊ฐ์ง ํ๋กํ ์ฝ์ ์ํด ๋ค์ํ ํต์ ๋ฐฉ์์ ์ ์ฉํ ์ ์์ง๋ง ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋๋ ๋ฐฉ์์ HTTP/HTTPS ๋ฐฉ์
์คํ๋ง ๋ถํธ์ ๋์ ๋ฐฉ์
spring-boot-starter-web ๋ชจ๋์ ์ฌ์ฉํ๋ฉด ๊ธฐ๋ณธ์ ์ผ๋ก ํฐ์บฃ(Tomcat)์ ์ฌ์ฉํ๋ ์คํ๋ง MVC ๊ตฌ์กฐ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋์
์๋ธ๋ฆฟ(Servlet) : ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ์ฒ๋ฆฌํ๊ณ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ๋ ์๋ฐ ์น ํ๋ก๊ทธ๋๋ฐ ๊ธฐ์
์ผ๋ฐ์ ์ผ๋ก ์๋ธ๋ฆฟ์ ์๋ธ๋ฆฟ ์ปจํ
์ด๋์์ ๊ด๋ฆฌ.
์๋ธ๋ฆฟ ์ปจํ
์ด๋ : ์๋ธ๋ฆฟ ์ธ์คํด์ค๋ฅผ ์์ฑํ๊ณ ๊ด๋ฆฌํ๋ ์ญํ ์ ์ํํ๋ ์ฃผ์ฒด
ํฐ์บฃ์ WAS์ ์ญํ ๊ณผ ์๋ธ๋ฆฟ ์ปจํ
์ด๋์ ์ญํ ์ ์ํํ๋ ๋ํ์ ์ปจํ
์ด๋
์๋ธ๋ฆฟ ์ปจํ ์ด๋ ํน์ง
- ์๋ธ๋ฆฟ ๊ฐ์ฒด๋ฅผ ์์ฑ, ์ด๊ธฐํ, ํธ์ถ, ์ข ๋ฃํ๋ ์๋ช ์ฃผ๊ธฐ๋ฅผ ๊ด๋ฆฌ
- ์๋ธ๋ฆฟ ๊ฐ์ฒด๋ ์ฑ๊ธํค ํจํด์ผ๋ก ๊ด๋ฆฌ๋จ
- ๋ฉํฐ ์ค๋ ๋ฉ์ ์ง์
์คํ๋ง์์๋ DispatcherServlet
์ด ์๋ธ๋ฆฟ ์ญํ ์ ์ํ. ์ผ๋ฐ์ ์ผ๋ก ์คํ๋ง์ ํฐ์บฃ์ ์๋ฒ ๋ํด ์ฌ์ฉ
โ ์๋ธ๋ฆฟ ์ปจํ
์ด๋์ DispatcherServlet
์ ์๋ ์ค์ ๋ web.xml
์ ์ค์ ๊ฐ์ ๊ณต์
DispatcherServlet ๋์
DispatcherServlet
์ผ๋ก ์์ฒญ(HttpServletRequest
)์ด ๋ค์ด์ค๋ฉดDispatcherServlet
์ ํธ๋ค๋ฌ ๋งคํ(Handler Mapping)
์ ํตํด ์์ฒญ URI์ ๋งคํ๋ ํธ๋ค๋ฌ๋ฅผ ํ์ ์ฌ๊ธฐ์ ํธ๋ค๋ฌ๋ ์ปจํธ๋กค๋ฌ(Controller)
๋ฅผ ์๋ฏธ- ํธ๋ค๋ฌ ์ด๋ํฐ
(HandlerAdapter)
๋ก ์ปจํธ๋กค๋ฌ๋ฅผ ํธ์ถ - ํธ๋ค๋ฌ ์ด๋ํฐ์ ์ปจํธ๋กค๋ฌ์ ์๋ต์ด ๋์์ค๋ฉด
ModelAndView
๋ก ์๋ต์ ๊ฐ๊ณตํด ๋ฐํ - ๋ทฐ ํ์์ผ๋ก ๋ฆฌํดํ๋ ์ปจํธ๋กค๋ฌ๋ฅผ ์ฌ์ฉํ ๋๋ ๋ทฐ ๋ฆฌ์กธ๋ฒ
(View Resolver)
๋ฅผ ํตํด ๋ทฐ๋ฅผ ๋ฐ์ ๋ฆฌํด
ํธ๋ค๋ฌ ๋งคํ
: ์์ฒญ ์ ๋ณด๋ฅผ ๊ธฐ์ค์ผ๋ก ์ด๋ค ์ปจํธ๋กค๋ฌ๋ฅผ ์ฌ์ฉํ ์ง ์ ์ ํ๋ ์ธํฐํ์ด์ค. ์ฌ๋ฌ ๊ตฌํ์ฒด๋ฅผ ๊ฐ์ง
ํธ๋ค๋ฌ ๋งคํ ์ธํฐํ์ด์ค์ ๋ํ์ ๊ตฌํ ํด๋์ค
BeanNameUrlHandlerMapping
- ๋น ์ด๋ฆ์ URL๋ก ์ฌ์ฉํ๋ ๋งคํ ์ ๋ต
- ๋น์ ์ ์ํ ๋ ์ฌ๋์("/")๊ฐ ๋ค์ด๊ฐ๋ฉด ๋งคํ ๋์์ด ๋จ
- ex. @Bean("/hello")
ControllerClassNameHandlerMapping
- URL๊ณผ ์ผ์นํ๋ ํด๋์ค ์ด๋ฆ์ ๊ฐ๋ ๋น์ ์ปจํธ๋กค๋ฌ๋ก ์ฌ์ฉํ๋ ์ ๋ต
- ์ด๋ฆ ์ค Controller๋ฅผ ์ ์ธํ๊ณ ์๋ถ๋ถ์ ์์ฑ๋ suffix๋ฅผ ์๋ฌธ์๋ก ๋งคํ
SimpleUrlHandlerMapping
- URL ํจํด์ ๋งคํ๋ ์ปจํธ๋กค๋ฌ๋ฅผ ์ฌ์ฉํ๋ ์ ๋ต
DefaultAnnotationHandlerMapping
- ์ด๋ ธํ ์ด์ ์ผ๋ก URL๊ณผ ์ปจํธ๋กค๋ฌ๋ฅผ ๋งคํํ๋ ๋ฐฉ๋ฒ
๋ทฐ ๋ฆฌ์กธ๋ฒ
: ๋ทฐ์ ๋ ๋๋ง ์ญํ ์ ๋ด๋นํ๋ ๋ทฐ ๊ฐ์ฒด๋ฅผ ๋ฐํํจ
๋ ์ด์ด๋ ์ํคํ ์ณ (Layered Architecture)
์ ํ๋ฆฌ์ผ์ด์ ์ ์ปดํฌ๋ํธ๋ฅผ ์ ์ฌ ๊ด์ฌ์ฌ๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ ์ด์ด๋ฅผ ๋ฌถ์ด ์ํ์ ์ผ๋ก ๊ตฌ์ฑํ ๊ตฌ์กฐ๋ฅผ ์๋ฏธ
Spring MVC๋ Model-View-Controller์ ๊ตฌ์กฐ๋ก View์ Controller๋ ํ๋ ์ ํ
์ด์
๊ณ์ธต ์์ญ์ด๋ฉฐ, Model์ ๋น์ฆ๋์ค์ ๋ฐ์ดํฐ ์ ๊ทผ ๊ณ์ธต์ ์์ญ์ผ๋ก ๊ตฌ๋ถํ ์ ์์
๋ค๋ง, ์คํ๋ง MVC ๋ชจ๋ธ๋ก ๋ ์ด์ด๋ ์ํคํ
์ฒ๋ฅผ ๊ตฌํํ๊ธฐ ์ํด์๋ ์ญํ ์ ์ธ๋ถํํจ
๋น์ฆ๋์ค ๊ณ์ธต์ ์๋น์ค๋ฅผ ๋ฐฐ์นํด ์ํฐํฐ์ ๊ฐ์ ๋๋ฉ์ธ ๊ฐ์ฒด์ ๋น์ฆ๋์ค ๋ก์ง์ ์กฐํฉํ๋๋ก ํ๊ณ ๋ฐ์ดํฐ ์ ๊ทผ ๊ณ์ธต์๋ DAO (Spring Data JPA์์๋ Repository)๋ฅผ ๋ฐฐ์นํด ๋๋ฉ์ธ์ ๊ด๋ฆฌํจ
์คํ๋ง ๋ ์ด์ด๋ ์ํคํ ์ณ
ํ๋ ์ ํ ์ด์ ๊ณ์ธต
- ์ํฉ์ ๋ฐ๋ผ ์ ์ ์ธํฐํ์ด์ค(UI; User Interface) ๊ณ์ธต์ด๋ผ๊ณ ๋ ํจ
- ํด๋ผ์ด์ธํธ์์ ์ ์
- ํด๋ผ์ด์ธํธ๋ก๋ถํฐ ๋ฐ์ดํฐ์ ํจ๊ป ์์ฒญ์ ๋ฐ๊ณ ์ฒ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ์๋ต์ผ๋ก ์ ๋ฌํ๋ ์ญํ
๋น์ฆ๋์ค ๊ณ์ธต
- ์ํฉ์ ๋ฐ๋ผ ์๋น์ค(Service) ๊ณ์ธต์ด๋ผ๊ณ ๋ ํจ
- ํต์ฌ ๋น์ฆ๋์ค ๋ก์ง์ ๊ตฌํํ๋ ์์ญ
- ํธ๋์ญ์ ์ฒ๋ฆฌ๋ ์ ํจ์ฑ ๊ฒ์ฌ ๋ฑ์ ์์ ๋ ์ํ
๋ฐ์ดํฐ ์ ๊ทผ ๊ณ์ธต
- ์ํฉ์ ๋ฐ๋ผ ์์(Persistence) ๊ณ์ธต์ด๋ผ๊ณ ๋ ํจ
- ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ๊ทผํด์ผ ํ๋ ์์ ์ ์ํ
- DAO๋ผ๋ ์ปดํฌ๋ํธ๋ก ํํ๋์ง๋ง Spring Data JPA์์๋ DAO ์ญํ ์ ๋ฆฌํฌ์งํ ๋ฆฌ๊ฐ ์ํํ๊ธฐ ๋๋ฌธ์ ๋ฆฌํฌ์งํ ๋ฆฌ๋ก ๋์ฒดํ ์ ์์
๊ฐ์ฅ ์ค์ํ ๋ถ๋ถ์ ๋น์ฆ๋์ค ๊ณ์ธต ์์ญ์ธ๋ฐ, ๋น์ฆ๋์ค ๋ก์ง์ ์ด๋์ ๋ด๋นํ ์ง ๊ฒฐ์ ํ๊ณ ์ค๊ณํ๋ ๊ฒ์ด ์ข์
๋น์ฆ๋์ค ๋ก์ง์ ๋๋ฉ์ธ ๊ณ์ธต์์ ๋ด๋นํ๋ ๊ฒ์ด ์ผ๋ฐ์
์คํ๋ง์์ JPA๋ฅผ ์ฌ์ฉํ๋ฉด @Entity๋ฅผ ์ ์ํ ํด๋์ค๊ฐ ๋๋ฉ์ธ ๊ฐ์ฒด๊ฐ ๋๋ฉฐ, ์ด๊ณณ์์ ๋น์ฆ๋์ค ๋ก์ง์ ์ค๊ณํ๋ฉด ์ข์
๋์์ธ ํจํด
์ํํธ์จ์ด๋ฅผ ์ค๊ณํ ๋ ์์ฃผ ๋ฐ์ํ๋ ๋ฌธ์ ๋ค์ ํด๊ฒฐํ๊ธฐ ์ํด ๊ณ ์๋ ํด๊ฒฐ์ฑ
'ํจํด'์ด๋ผ๋ ๋จ์ด๋ ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์์ ๋ฐ์ํ๋ ๋ฌธ์ ๋ ์ ์ฌํ ๊ฒฝ์ฐ๊ฐ ๋ง๊ณ ํด๊ฒฐ์ฑ ๋ ๋์ผํ๊ฒ ์ ์ฉํ ์ ์๋ค๋ ์๋ฏธ๋ฅผ ๋ดํฌ
๊ทธ๋ฌ๋ ๋ชจ๋ ๋ฌธ์ ์ ์ ๋ต์ ์๋๋ฉฐ ์ํฉ์ ๋ง๋ ์ต์ ํจํด์ ๊ฒฐ์ ํด์ ์ฌ์ฉํ๋ ๊ฒ์ด ๋ฐ๋์ง
์ข ๋ฅ
GoF ๋์์ธ ํจํด
: ๋์์ธ ํจํด์ ๊ตฌ์ฒดํํด์ ์ ๋ฆฌํ ๋ํ์ ์ธ ๋ถ๋ฅ ๋ฐฉ์
์์ฑ(Creational) ํจํด | ๊ตฌ์กฐ(Structural) ํจํด | ํ์(Behavioral) ํจํด |
---|---|---|
์ถ์ ํฉํ ๋ฆฌ | ์ด๋ํฐ | ์ฑ ์ ์ฐ์ |
๋น๋ | ๋ธ๋ฆฌ์ง | ์ปค๋งจ๋ |
ํฉํ ๋ฆฌ ๋ฉ์๋ | ์ปดํฌ์งํธ | ์ธํฐํ๋ฆฌํฐ |
ํ๋กํ ํ์ | ๋ฐ์ฝ๋ ์ดํฐ | ์ดํฐ๋ ์ดํฐ |
์ฑ๊ธํค | ํผ์ฌ๋ | ๋ฏธ๋์์ดํฐ |
ํ๋ผ์ด์จ์ดํธ | ๋ฉ๋ฉํ | |
ํ๋ฝ์ | ์ต์ ๋ฒ | |
์คํ ์ดํธ | ||
์คํธ๋ ํฐ์ง | ||
ํ ํ๋ฆฟ ๋ฉ์๋ | ||
๋น์งํฐ |
GoF ๋์์ธ ํจํด์ ์์ฑ ํจํด, ๊ตฌ์กฐ ํจํด, ํ์ ํจํด ์ด ์ธ๊ฐ์ง๋ก ๊ตฌ๋ถ๋จ
์์ฑ ํจํด
- ๊ฐ์ฒด ์์ฑ์ ์ฌ์ฉ๋๋ ํจํด์ผ๋ก, ๊ฐ์ฒด๋ฅผ ์์ ํด๋ ํธ์ถ๋ถ๊ฐ ์ํฅ์ ๋ฐ์ง ์๊ฒ ํจ
๊ตฌ์กฐ ํจํด
- ๊ฐ์ฒด๋ฅผ ์กฐํฉํด๋ ๋ ํฐ ๊ตฌ์กฐ๋ฅผ ๋ง๋๋ ํจํด
ํ์ ํจํด
- ๊ฐ์ฒด ๊ฐ์ ์๊ณ ๋ฆฌ์ฆ์ด๋ ์ฑ ์ ๋ถ๋ฐฐ์ ๊ดํ ํจํด
- ๊ฐ์ฒด ํ๋๋ก๋ ์ํํ ์ ์๋ ์์ ์ ์ฌ๋ฌ ๊ฐ์ฒด๋ฅผ ์ด์ฉํด ์์ ์ ๋ถ๋ฐฐํจ. ๊ฒฐํฉ๋ ์ต์ํ๋ฅผ ๊ณ ๋ คํ ํ์๊ฐ ์์
์์ฑ ํจํด
- ์ถ์ ํฉํ ๋ฆฌ : ๊ตฌ์ฒด์ ์ธ ํด๋์ค๋ฅผ ์ง์ ํ์ง ์๊ณ ์ํฉ์ ๋ง๋ ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ธฐ ์ํ ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํ๋ ํจํด
- ๋น๋ : ๊ฐ์ฒด์ ์์ฑ๊ณผ ํํ์ ๋ถ๋ฆฌํด ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ ํจํด
- ํฉํ ๋ฆฌ ๋ฉ์๋ : ๊ฐ์ฒด ์์ฑ์ ์๋ธํด๋์ค๋ก ๋ถ๋ฆฌํด์ ์์ํ๋ ํจํด
- ํ๋กํ ํ์ : ์๋ณธ ๊ฐ์ฒด๋ฅผ ๋ณต์ฌํด ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ ํจํด
- ์ฑ๊ธํค : ํ ํด๋์ค๋ง๋ค ์ธ์คํด์ค๋ฅผ ํ๋๋ง ์์ฑํด์ ์ธ์คํด์ค๊ฐ ํ๋์์ ๋ณด์ฅํ๊ณ ์ด๋ ๊ณณ์๋ ์ ๊ทผํ ์ ์ด์ ์ ๊ณตํ๋ ํจํด
๊ตฌ์กฐ ํจํด
- ์ด๋ํฐ : ํด๋์ค์ ์ธํฐํ์ด์ค๋ฅผ ์๋ํ๋ ์ธํฐํ์ด์ค๋ก ๋ณํํ๋ ํจํด
- ๋ธ๋ฆฌ์ง : ์ถ์ํ์ ๊ตฌํ์ ๋ถ๋ฆฌํด์ ๊ฐ๊ฐ ๋ ๋ฆฝ์ฉ์ผ๋ก ๋ณํ์ผ ํ๋ ํจํด
- ์ปดํฌ์งํธ : ์ฌ๋ฌ ๊ฐ์ฒด๋ก ๊ตฌ์ฑ๋ ๋ณตํฉ ๊ฐ์ฒด์ ๋จ์ผ ๊ฐ์ฒด๋ฅผ ํด๋ผ์ด์ด๋์์ ๊ตฌ๋ณ ์์ด ๋ค๋ฃจ๋ ํจํด
- ๋ฐ์ฝ๋ ์ดํฐ : ๊ฐ์ฒด์ ๊ฒฐํฉ์ ํตํด ๊ธฐ๋ฅ์ ๋์ ์ผ๋ก ์ ์ฐํ๊ฒ ํ์ฅํ ์ ์๊ฒ ํ๋ ํจํด
- ํผ์ฌ๋ : ์๋ธ์์คํ ์ ์ธํฐํ์ด์ค ์งํฉ๋ค์ ํ๋์ ํตํฉ๋ ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํ๋ ํจํด
- ํ๋ผ์ด์จ์ดํธ : ํน์ ํด๋์ค์ ์ธ์คํด์ค ํ ๊ฐ๋ฅผ ๊ฐ์ง๊ณ ์ฌ๋ฌ ๊ฐ์ '๊ฐ์ ์ธ์คํด์ค'๋ฅผ ์ ๊ณตํ ๋ ์ฌ์ฉํ๋ ํจํด
- ํ๋ฝ์ : ํน์ ๊ฐ์ฒด๋ฅผ ์ง์ ์ฐธ์กฐํ์ง ์๊ณ ํด๋น ๊ฐ์ฒด๋ฅผ ๋ํ(ํ๋ฝ์)ํ๋ ๊ฐ์ฒด๋ฅผ ํตํด ์ ๊ทผํ๋ ํจํด
ํ์ ํจํด
- ์ฑ ์ ์ฐ์ : ์์ฒญ ์ฒ๋ฆฌ ๊ฐ์ฒด๋ฅผ ์งํฉ์ผ๋ก ๋ง๋ค์ด ๊ฒฐํฉ์ ๋์จํ๊ฒ ๋ง๋๋ ํจํด
- ์ปค๋งจ๋ : ์คํ๋ ๊ธฐ๋ฅ์ ์บก์ํํด์ ์ฃผ์ด์ง ์ฌ๋ฌ ๊ธฐ๋ฅ์ ์คํํ๋๋ก ํด๋์ค๋ฅผ ์ค๊ณํ๋ ํจํด
- ์ธํฐํ๋ฆฌํฐ : ์ฃผ์ด์ง ์ธ์ด์ ๋ฌธ๋ฒ์ ์ํ ํํ ์๋จ์ ์ ์ํ๊ณ ํด๋น ์ธ์ด๋ก ๊ตฌ์ฑ๋ ๋ฌธ์ฅ์ ํด์ํ๋ ํจํด
- ์ดํฐ๋ ์ดํฐ : ๋ด๋ถ ๊ตฌ์กฐ ๋ ธ์ถํ์ง ์์ผ๋ฉด์ ํด๋น ๊ฐ์ฒด์ ์งํฉ ์์์ ์์ฐจ์ ์ผ๋ก ์ ๊ทผํ๋ ๋ฐฉ๋ฒ์ ์ ๊ณตํ๋ ํจํด
- ๋ฏธ๋์์ดํฐ : ํ ์งํฉ์ ์ํ ๊ฐ์ฒด๋ค์ ์ํธ์์ฉ์ ์บก์ํํ๋ ๊ฐ์ฒด๋ฅผ ์ ์ํ ํจํด
- ๋ฉ๋ฉํ : ๊ฐ์ฒด์ ์ํ ์ ๋ณด๋ฅผ ์ ์ฅํ๊ณ ํ์ํค ๋ฐ๋ผ ์ํ๋ฅผ ๋ณต์ํ๋ ํจํด
- ์ต์ ๋ฒ : ๊ฐ์ฒด์ ์ํ ๋ณํ๋ฅผ ๊ด์ฐฐํ๋ ๊ด์ฐฐ์๋ค, ์ฆ ์ต์ ๋ฒ ๋ชฉ๋ก์ ๊ฐ์ฒด์ ๋ฑ๋กํด ์ํ๊ฐ ๋ณํ ๋๋ง๋ค ๋ฉ์๋๋ฑ์ ํตํด ๊ฐ์ฒด๊ฐ ์ง์ ์ต์ ๋ฒ์๊ฒ ํต์งํ๊ฒ ํ๋ ๋์์ธ ํจํด
- ์คํ ์ดํธ : ์ํ์ ๋ฐ๋ผ ๊ฐ์ฒด๊ฐ ํ๋์ ๋ณ๊ฒฝํ๊ฒ ํ๋ ํจํด
- ์คํธ๋ํฐ์ง : ํ๋์ ํด๋์ค๋ก ์บก์ํํด์ ๋์ ์ผ๋ก ํ๋์ ๋ฐ๊ฟ ์ ์๊ฒ ํ๋ ํจํด
- ํ ํ๋ฆฟ ๋ฉ์๋ : ์ผ์ ์์ ์ ์ฒ๋ฆฌํ๋ ๋ถ๋ถ์ ์๋ธํด๋์ค๋ก ์บก์ํํด์ ์ ์ฒด ์ํ ๊ตฌ์กฐ๋ ๋ฐ๊พธ์ง ์์ผ๋ฉด์ ํน์ ๋จ๊ณ๋ง ๋ณ๊ฒฝํด์ ์ํํ๋ ํจํด
- ๋น์งํฐ : ์ค์ ๋ก์ง์ ๊ฐ์ง๊ณ ์๋ ๊ฐ์ฒด(visitor)๊ฐ ๋ก์ง์ ์ ์ฉํ ๊ฐ์ฒด(element)๋ฅผ ๋ฐฉ๋ฌธํ์ฌ ์คํํ๋ ํจํด
'์คํ๋ง' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์น ์๋ฒ, ์น ์ ํ๋ฆฌ์ผ์ด์ ์๋ฒ (0) | 2022.10.20 |
---|---|
๊ธฐ์ด ์ง์ - 2 REST API (0) | 2022.09.01 |
๊ด์ ์งํฅ ํ๋ก๊ทธ๋๋ฐ (AOP) (0) | 2022.09.01 |
์์กด์ฑ ์ฃผ์ ( DI ) (0) | 2022.09.01 |
์ ์ด์ ์ญ์ ( IoC ) (0) | 2022.09.01 |