๐Ÿƒ์Šคํ”„๋ง์ด๋ž€ ๋ฌด์—‡์ธ๊ฐ€

ํ˜ธ๋Œยท2021๋…„ 1์›” 9์ผ
0

BackEnd

๋ชฉ๋ก ๋ณด๊ธฐ
1/25
post-thumbnail

๐Ÿก์Šคํ”„๋ง์ด๋ผ๋Š” ํ”„๋ ˆ์ž„์›Œํฌ

ํ”„๋ ˆ์ž„์›Œํฌ์˜ ์‚ฌ์ „์  ์˜๋ฏธ๋Š” ๋ผˆ๋Œ€, ๊ทผ๊ฐ„์ด๋‹ค. ๊ทธ๋Ÿฐ๋ฐ, ์›น์„ ๊ฐœ๋ฐœํ•˜๋Š”๋ฐ ๋ผˆ๋Œ€๊ฐ€ ์™œ ํ•„์š”ํ• ๊นŒ?

a,b,c๊ฐ€ ํ•จ๊ป˜ ์ผํ•˜๋Š”๋ฐ ๋ชจ๋“œ๊ฐ€ ๋‹ค๋ฅธ ๋ฐฉ์‹์œผ๋กœ ์ผํ•œ๋‹ค๋ฉด ์–ด๋–จ๊นŒ? a์™€ b๊ฐ€ ๋‹ค๋ฅธ ๋ฐฉ์‹์œผ๋กœ ๊ฐœ๋ฐœํ•˜๊ณ  ์ฝ”๋“œ๋ฅผ ํ•ฉ์น˜๊ฒŒ ๋˜์—ˆ์œผ๋ฉด ์ƒ์ƒํ•˜์ง€ ๋ชปํ•œ ๋ฌธ์ œ๋“ค์ด ๋ฐœ์ƒํ•  ๊ฒƒ ์ด๋‹ค.

๊ทธ๋ž˜์„œ ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ๋…์žฌ์ž์ฒ˜๋Ÿผ ๊ฐœ๋ฐœ์˜ ํ๋ฆ„์„ ์ œ์–ดํ•œ๋‹ค.

๊ฐœ๋ฐœ์ž๋Š” ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ์ œ์–ดํ•˜๋Š” ํ๋ฆ„์„ ๋”ฐ๋ผ ๊ฐœ๋ฐœํ•  ์ˆ˜ ๋ฐ–์— ์—†๋‹ค. ์œ„์—์„œ ์˜ˆ๋กœ๋“  a,b,c์œผ๋กœ ์ด๋ฃจ์–ด์ง„ ์•ŒํŒŒ๋ฒณ ํŒ€ ๋ชจ๋“œ๊ฐ€ Spring์„ ์“ด๋‹ค๊ณ  ํ•ด๋ณด์ž. ๊ทธ๋Ÿผ a์™€ b๋Š” ์ž์‹ ๋งŒ์˜ ๋ฐฉ์‹๋Œ€๋กœ ๊ฐœ๋ฐœํ•  ์ˆ˜ ์—†๋‹ค. ์˜ค๋กœ์ง€ Spring์ด ์ œ์–ดํ•˜๋Š” ํ๋ฆ„ ์œ„์—์„œ ์ž์‹ ์˜ ์ฝ”๋“œ๋ฅผ ์ถ”๊ฐ€ํ•  ๊ฒƒ์ด๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ์œ„์™€ ๊ฐ™์€ ์ผ์€ ์ผ์–ด๋‚˜์ง€ ์•Š์„ ๊ฒƒ์ด๋‹ค.

๊ทธ๋Ÿฌ๋‹ˆ๊นŒ ์ด์ œ๋ถ€ํ„ฐ๋Š” ์ง์ ‘ ๊ตฌ์กฐ๋ฅผ ์งค ํ•„์š”๊ฐ€ ์—†์ด, ์Šคํ”„๋ง์ด ๋งŒ๋“ค์–ด๋†“์€ ๊ตฌ์กฐ ์œ„์— ์‚ด์„ ๋ถ™์ด๊ณ  ์ƒ‰์„ ์น ํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋œ๋‹ค.

ํŠน์ง•

  • ๐Ÿ’ก POJO๊ธฐ๋ฐ˜ ๊ตฌ์„ฑ

    ์Šคํ”„๋ง์€ ๋‚ด๋ถ€์ ์œผ๋กœ ๊ฐ์ฒด ๊ฐ„์˜ ๊ด€๊ณ„๋ฅผ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ํŠน์ง•์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. ์ด๋•Œ ๋ณ„๋„์˜ API๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ์ผ๋ฐ˜์ ์ธ ์ž๋ฐ” ์ฝ”๋“œ๋งŒ์œผ๋กœ ๊ฐ์ฒด๋ฅผ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋Ÿฐ ๊ตฌ์„ฑ์„ Plain Old Java Object(POJO)๊ตฌ์„ฑ์ด๋ผ๊ณ  ํ•œ๋‹ค. ์ด๋ ‡๊ฒŒ ํ–ˆ์„ ๋•Œ, ์–ด๋–ค ๊ธฐ์ˆ ์— ์ข…์†์ ์ด์ง€ ์•Š์œผ๋ฏ€๋กœ ๋งŒ๋“ค๊ธฐ ํŽธํ•˜๊ณ , ๊ณ ์น˜๊ธฐ๋„ ์‰ฝ๊ณ , ํ…Œ์ŠคํŠธํ•˜๊ธฐ๋„ ์ข‹๋‹ค.

  • ๐Ÿ’ก ์˜์กด์„ฑ ์ฃผ์ž… Dependency Injection(DI)

    ์˜์กด์„ฑ์€ ํ•˜๋‚˜์˜ ๊ฐ์ฒด๊ฐ€ ๋‹ค๋ฅธ ๊ฐ์ฒด ์—†์ด ์ž์‹ ์˜ ์—ญํ• ์„ ํ•  ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค. ์ฃผ์ž…์€, ๋ฐ€์–ด๋„ฃ๋Š” ๊ฒƒ์ด๋‹ค. ์ด ๋‘๊ฐœ๋ฅผ ํ•ฉ์น˜๋ฉด ์˜์กด์„ฑ ์ฃผ์ž…์ด๋‹ค. ์–ด๋–ค ๊ฐ์ฒด๊ฐ€ ํ•„์š”๋กœ ํ•˜๋Š” ๊ฐ์ฒด๋ฅผ ์ฐพ์•„์„œ ๋ฐ€์–ด๋„ฃ๋Š” ๊ฒƒ์ด๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ์™œ ์˜์กด์„ฑ ์ฃผ์ž…์„ ์ด์šฉํ•˜๋Š” ๊ฒƒ์ผ๊นŒ? ์˜์กด์„ฑ ์ฃผ์ž…์„ ๋ฐ›๋Š” ์ž…์žฅ์—์„œ๋Š” ์–ด๋–ค ๊ฐ์ฒด์ธ์ง€ ์‹ ๊ฒฝ ์“ธ ํ•„์š”๊ฐ€ ์—†๋‹ค. ์–ด๋–ค ๊ฐ์ฒด์— ์˜์กดํ•˜๋“ , ๊ทธ ์—ญํ• ์€ ๋ณ€ํ•˜์ง€ ์•Š๋Š”๋‹ค. ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ์˜ ์ผ์ข…์ธ Application Context์— ์˜ํ•ด ์ฃผ์ž…๋˜๋ฉฐ Application Context๋Š” ๋Š˜ ๋Œ€๊ธฐํ•˜๋ฉด์„œ ๋นˆ์„ ๊ด€๋ฆฌํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋ˆ„๊ตฐ๊ฐ€ ๋นˆ์„ ์š”์ฒญํ•˜๋ฉด, ํ•ด๋‹น ๋นˆ์„ ์ฐพ์•„์„œ ์ฃผ์ž…ํ•œ๋‹ค.

  • ๐Ÿ’ก AOP(Aspect-Oriented-Programmin)

    ๊ฐœ๋ฐœํ•  ๋•Œ ํ•ต์‹ฌ ๋น„์ง€๋‹ˆ์Šค ๋กœ์ง์—๋งŒ ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋•๋Š” ๊ธฐ๋Šฅ์ด๋‹ค. ์‹œ์Šคํ…œ์ด ๊ณตํ†ต์œผ๋กœ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋ฐ˜๋ณต์ ์ธ ์ฝ”๋“œ๊ฐ€ ์žˆ๋‹ค. ํ•ต์‹ฌ ๋กœ์ง์€ ์•„๋‹ˆ์ง€๋งŒ, ๋ฐ˜๋“œ์‹œ ์ฒ˜๋ฆฌํ•ด์•ผ๋งŒ ํ•˜๋Š” ๊ท€์ฐฎ์„ ๊ฒƒ๋“ค, ์ด๊ฒƒ์„ ์Šคํ”„๋ง์—์„œ๋Š” ํšก๋‹จ ๊ด€์‹ฌ์‚ฌ(Cross-concern) ๋ผ๊ณ  ํ•œ๋‹ค. AOP๋Š” ํšก๋‹จ ๊ด€์‹ฌ์‚ฌ๋ฅผ ๋ชจ๋“ˆ๋กœ ๋ถ„๋ฆฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํŒจ๋Ÿฌ๋‹ค์ž„์ด๋‹ค.

    AOP์˜ ์žฅ์ ์œผ๋กœ๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ ๋น„์ง€๋‹ˆ์Šค ๋กœ์ง์—๋งŒ ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋ฉฐ, ํ”„๋กœ์ ํŠธ๋งˆ๋‹ค ๋‹ค๋ฅธ ๊ด€์‹ฌ์‚ฌ๋ฅผ ์ ์šฉํ•  ๋•Œ, ์ฝ”๋“œ ์ˆ˜์ •์„ ์ตœ์†Œํ™” ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋˜ํ•œ ์›ํ•˜๋Š” ๊ด€์‹ฌ์‚ฌ์˜ ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ์ˆ˜์›”ํ•œ ์ฝ”๋“œ๋ฅผ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

  • ๐Ÿ’ก MVC๊ตฌ์กฐ

    Model-view-Controller์˜ ์•ฝ์ž์ด๋‹ค.

    Model : ๋ชจ๋ธ์€ ๋ทฐ๊ฐ€ ๋ Œ๋”๋งํ•˜๋Š”๋ฐ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ์ด๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์‚ฌ์šฉ์ž๊ฐ€ ์š”์ฒญํ•œ ์ƒํ’ˆ ๋ชฉ๋ก์ด๋‚˜, ์ฃผ๋ฌธ ๋‚ด์—ญ์ด ์ด์— ํ•ด๋‹น๋œ๋‹ค.

    View : ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ๋ทฐ(View)๋Š” ์‹ค์ œ๋กœ ๋ณด์ด๋Š” ๋ถ€๋ถ„์ด๋ฉฐ, ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•ด ๋ Œ๋”๋งํ•œ๋‹ค. ๋ทฐ๋Š” JSP, JSF, PDF, XML๋“ฑ์œผ๋กœ ๊ฒฐ๊ณผ๋ฅผ ํ‘œํ˜„ํ•œ๋‹ค.

    Controller : ์ปจํŠธ๋กค๋Ÿฌ๋Š” ์‚ฌ์šฉ์ž์˜ ์•ก์…˜์— ์‘๋‹ตํ•˜๋Š” ์ปดํฌ๋„ŒํŠธ๋‹ค. ์ปจํŠธ๋กค๋Ÿฌ๋Š” ๋ชจ๋ธ์„ ์—…๋ฐ์ดํŠธํ•˜๊ณ , ๋‹ค๋ฅธ ์•ก์…˜๋“ค์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.

  • ๐Ÿ’ก WAS์— ์ข…์†์ ์ด์ง€ ์•Š์Œ

  • ๐Ÿ’ก ํŠธ๋žœ์žญ์…˜

    ํŠธ๋žœ์ ์…˜ ๊ด€๋ฆฌ๋ฅผ ์–ด๋…ธํ…Œ์ด์…˜์ด๋‚˜ XML์„ค์ •๋งŒ์œผ๋กœ ๋๋‚ผ ์ˆ˜ ์žˆ๋‹ค.

profile
์ €๋„ ๋ชจ๋ฅด๋Š”๋ฐ์š”?, ๋‚ด๊ฐ€ ๋ชฐ๋ผ์„œ ์ ๋Š” ๊ธ€

0๊ฐœ์˜ ๋Œ“๊ธ€