๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Back-End/JAVA

JAVA, SPRING ๊ธฐ์ˆ  ๋ฉด์ ‘ ์ •๋ฆฌ

by bamDal 2022. 9. 6.

- ์ž๋ฐ”

1. ์ž๋ฐ”์˜ ํŠน์ง•

1. ๊ฐ์ฒด ์ง€ํ–ฅ ์–ธ์–ด์ด๋‹ค. (๊ฐ์ฒด ์ง€ํ–ฅ ์–ธ์–ด๋ž€ ์†Œ์Šค๋ฅผ ๋ถ€ํ’ˆ์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ์ƒ๊ธด ๊ฐœ๋…)

2. ์ด์‹์„ฑ์ด ๋†’๋‹ค.

3. ์˜คํ”ˆ์†Œ์Šค ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ํ’๋ถ€ํ•˜๋‹ค.

4. ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ž๋™์œผ๋กœ ๊ด€๋ฆฌํ•œ๋‹ค. (๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜)

5. ํ•จ์ˆ˜์  ์Šคํƒ€์ผ ์ฝ”๋”ฉ์„ ์ง€์›ํ•œ๋‹ค. (์ž๋ฐ” 8๋ถ€ํ„ฐ ๋žŒ๋‹ค์‹ ์ง€์›)

-> ์ฆ‰, ๋‚จ์˜ ์†Œ์Šค๋ฅผ ํŽธํ•˜๊ฒŒ ์“ธ ์ˆ˜ ์žˆ๋„๋ก ์„ค๊ณ„๋˜์–ด ์žˆ๋‹ค.

2. ์ž๋ฐ”์˜ ์žฅ๋‹จ์ 

1. ์žฅ์  : ๊ฐ์ฒด์ง€ํ–ฅ ์–ธ์–ด๋กœ ์†Œ์Šค๋ฅผ ๋ถ€ํ’ˆ์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์–ด ๊ฒฐํ•ฉ๋„๊ฐ€ ๋‚ฎ๋‹ค. ์ด์‹์„ฑ์ด ๋†’์•„ ์†Œ์Šค ํŒŒ์ผ์„ ์ˆ˜์ •ํ•˜์ง€ ์•Š์•„๋„ JRE๊ฐ€ ์„ค์น˜๋œ ๋ชจ๋“  ์šด์˜์ฒด์ œ์—์„œ ์‹คํ–‰ ๊ฐ€๋Šฅํ•˜๋‹ค. ์˜คํ”ˆ์†Œ์Šค ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ํ’๋ถ€ํ•˜์—ฌ ์‰ฝ๊ฒŒ ๊ฐœ๋ฐœ ๊ฐ€๋Šฅํ•˜๋‹ค. ๋™์  ๋กœ๋”ฉ์„ ์ง€์›ํ•ด ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ์‰ฝ๊ณ  ๋น ๋ฅด๋‹ค.

2. ๋‹จ์  : ์‹คํ–‰ ์†๋„๊ฐ€ ๋‹ค๋ฅธ ์–ธ์–ด๋ณด๋‹ค ๋Š๋ฆฌ๋‹ค. JVM์—์„œ ์‹คํ–‰๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋งŽ์€ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์†Œ๋น„ํ•œ๋‹ค. JVM์„ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ•˜๋“œ์›จ์–ด๋ฅผ ์ง์ ‘ ์ •๋ฐ€ํ•˜๊ฒŒ ์กฐ์ •ํ•ด์•ผํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ ๊ฐœ๋ฐœ์—๋Š” ์ ํ•ฉํ•˜์ง€ ์•Š๋‹ค. ์˜ˆ์™ธ์ฒ˜๋ฆฌ๊ฐ€ ํ•„์ˆ˜์ ์ด๋‹ค. ์ฝ”๋“œ๊ฐ€ ๊ธธ๋‹ค. 

 

3. ์ธํ„ฐํŽ˜์ด์Šค์™€ ์ถ”์ƒ ํด๋ž˜์Šค์˜ ์ฐจ์ด๋Š” ๋ฌด์—‡์ธ๊ฐ€?

1. ์ธํ„ฐํŽ˜์ด์Šค : ๊ฐ์ฒด์˜ ์‚ฌ์šฉ ๋ฐฉ๋ฒ•์„ ์ •์˜ํ•œ ํƒ€์ž…์ด๋‹ค.
 - ๊ฐ์ฒดํ™”๊ฐ€ ๋ถˆ๊ฐ€๋Šฅํ•˜๊ณ , ๋ถ„๋ฅ˜๊ฐ€ ์•„๋‹Œ ๊ทœ๊ฒฉ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ณต์ˆ˜๊ฐœ์˜ ์ธํ„ฐํŽ˜์ด์Šค ๊ตฌํ˜„์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ์ต๋ช… ๊ฐ์ฒด ์‚ฌ์šฉ ๊ฐ€๋Šฅ, ์‹ค์ฒด ํด๋ž˜์Šค๊ฐ€ implementsํ•˜์—ฌ ์‚ฌ์šฉํ•œ๋‹ค.

2. ์ถ”์ƒ ํด๋ž˜์Šค : ์‹ค์ฒด ํด๋ž˜์Šค์˜ ๊ณตํ†ต์ ์ธ ํŠน์„ฑ์„ ์ถ”์ถœํ•ด์„œ ์„ ์–ธํ•œ ํด๋ž˜์Šค์ด๋‹ค.
 - ์ž์‹๊ฐ์ฒด๋งŒ ๊ฐ์ฒดํ™” ๊ฐ€๋Šฅํ•˜๊ณ , 1๊ฐœ์˜ ์ถ”์ƒ ํด๋ž˜์Šค๋งŒ ์ƒ์† ๊ฐ€๋Šฅํ•˜๋‹ค. ์‹ค์ฒด ํด๋ž˜์Šค๊ฐ€ extends ํ•˜์—ฌ ์‚ฌ์šฉํ•œ๋‹ค.

4. ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ์™œ ํ•„์š”ํ•œ๊ฐ€?

- ์ธํ„ฐํŽ˜์ด์Šค๋Š” ์‚ฌ์šฉ๋ฐฉ๋ฒ•์„ ์ •์˜ํ•˜๊ณ  ๊ณต๋™ ์ž‘์—… ์‹œ ๊ทœ๊ฒฉ์„ ์ œ์‹œํ•  ์ˆ˜ ์žˆ๋‹ค.
- ์ฝ”๋“œ ๋ณ€๊ฒฝ ์—†์ด ์‹คํ–‰ ๋‚ด์šฉ๊ณผ ๋ฆฌํ„ด๊ฐ’์„ ๋‹ค์–‘ํ™”ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

5. ํด๋ž˜์Šค, ๊ฐ์ฒด, ์ธ์Šคํ„ด์Šค์˜ ์ฐจ์ด?

- ํด๋ž˜์Šค๋Š” ์›๋ณธ, ๊ฐ์ฒดํ™”๋Š” ํด๋ž˜์Šค๋ฅผ ๋ณต์‚ฌํ•˜๋Š” ๊ฒƒ, ์ธ์Šคํ„ด์Šค๋Š” ๋ณต์‚ฌ๋ณธ์ด๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค. 

1) ํด๋ž˜์Šค : ๊ฐ์ข… ๋ฉ”์„œ๋“œ์™€ ํ•„๋“œ ๋“ฑ์„ ๋‹ด๋Š” ๋ถ„๋ฅ˜

2) ๊ฐ์ฒด : ๋ฌผ๋ฆฌ์ ์œผ๋กœ ์กด์žฌํ•˜๊ฑฐ๋‚˜ ์ถ”์ƒ์ ์œผ๋กœ ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ ์ค‘์—์„œ ์ž์‹ ์˜ ์†์„ฑ์„ ๊ฐ€์ง€๊ณ  ๋‹ค๋ฅธ ๊ฒƒ๊ณผ ์‹๋ณ„ ๊ฐ€๋Šฅํ•œ ๊ฒƒ 
ex) ๋ฌผ๋ฆฌ์ ์œผ๋กœ ์กด์žฌํ•˜๋Š” ์ž๋™์ฐจ, ์ž์ „๊ฑฐ, ์ฑ…, ์‚ฌ๋žŒ / ์ถ”์ƒ์ ์ธ ํ•™๊ณผ, ๊ฐ•์˜, ์ฃผ๋ฌธ

3) ์ธ์Šคํ„ด์Šค : ํด๋ž˜์Šค๋กœ๋ถ€ํ„ฐ ๋งŒ๋“ค์–ด์ง„ ๊ฐ์ฒด๋ฅผ ํ•ด๋‹น ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค๋ผ๊ณ  ํ•œ๋‹ค.
ํด๋ž˜์Šค์˜ ํƒ€์ž…์œผ๋กœ ์„ ์–ธ๋˜์—ˆ์„ ๋•Œ ๊ฐ์ฒด๋ผ๊ณ  ๋ถ€๋ฅด๊ณ , ๊ทธ ๊ฐ์ฒด๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์— ํ• ๋‹น๋˜์–ด ์‹ค์ œ ์‚ฌ์šฉ๋  ๋•Œ ์ธ์Šคํ„ด์Šค๋ผ๊ณ  ํ•œ๋‹ค. ์ธ์Šคํ„ด์Šค๋Š” ์›๋ณธ(ํด๋ž˜์Šค)์œผ๋กœ๋ถ€ํ„ฐ ์ƒ์„ฑ๋œ ๋ณต์‚ฌ๋ณธ.

 

6. ์˜ค๋ฒ„๋ผ์ด๋“œ์™€ ์˜ค๋ฒ„๋กœ๋“œ์˜ ์ฐจ์ด

1) ์˜ค๋ฒ„๋กœ๋“œ๋Š” ๊ณผ์ ์ด๋ž€ ๋œป์œผ๋กœ, ๊ฐ™์€ ์ด๋ฆ„์˜ ๋ฉ”์„œ๋“œ๋ฅผ ์—ฌ๋Ÿฌ ๊ฐœ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ๋‹จ, ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ๊ฐฏ์ˆ˜๋‚˜ ํƒ€์ž…์€ ๋‹ฌ๋ผ์•ผ ํ•œ๋‹ค.

2) ์˜ค๋ฒ„๋ผ์ด๋“œ๋Š” ์ƒ์†๋ฐ›์€ ํด๋ž˜์Šค์˜ ๊ฐ์ฒด๋ฅผ ์žฌ์ •์˜ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

 

7. ์‹ฑ๊ธ€ํ†ค ํŒจํ„ด์„ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ 

- ์‹ฑ๊ธ€ํ†ค ํŒจํ„ด์€ 'ํ•˜๋‚˜'์˜ ์ธ์Šคํ„ด์Šค๋งŒ ์ƒ์„ฑํ•˜์—ฌ ์‚ฌ์šฉํ•˜๋Š” ๋””์ž์ธ ํŒจํ„ด์ด๋‹ค. ์ธ์Šคํ„ด์Šค๊ฐ€ ํ•„์š”ํ•  ๋•Œ, ๋˜‘๊ฐ™์€ ์ธ์Šคํ„ด์Šค๋ฅผ ๋งŒ๋“ค์ง€ ์•Š๊ณ  ๊ธฐ์กด์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ํ™œ์šฉํ•˜๋Š” ๊ฒƒ.

- ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ๋Š” ๋ฉ”๋ชจ๋ฆฌ ๋‚ญ๋น„๋ฅผ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•  ๋•Œ๋งˆ๋‹ค ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์„ ํ• ๋‹น๋ฐ›์•„์•ผํ•˜๋Š”๋ฐ, ํ•œ ๋ฒˆ์˜ new๋ฅผ ํ†ตํ•ด ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•œ๋‹ค๋ฉด ๋ฉ”๋ชจ๋ฆฌ ๋‚ญ๋น„๊ฐ€ ๋ฐฉ์ง€๋œ๋‹ค.
๋˜ํ•œ ์‹ฑ๊ธ€ํ†ค์œผ๋กœ ๊ตฌํ˜„ํ•œ ์ธ์Šคํ„ด์Šค๋Š” '์ „์—ญ'์ด๋ฏ€๋กœ, ๋‹ค๋ฅธ ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค๋“ค์ด ๋ฐ์ดํ„ฐ๋ฅผ ๊ณต์œ ํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

 

8. ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ํŠน์ง•

์บก์ถ”๋‹ค์ƒ
1) ์บก์Šํ™”(Encapsulation) :  ๊ฐ์ฒด์˜ ํ•„๋“œ, ๋ฉ”์†Œ๋“œ๋ฅผ ํ•˜๋‚˜๋กœ ๋ฌถ๊ณ , ์‹ค์ œ ๊ตฌํ˜„ ๋‚ด์šฉ์„ ๊ฐ์ถ”๋Š” ๊ฒƒ. ์ž๋ฐ”๋Š” ์ ‘๊ทผ ์ œํ•œ์ž๋ฅผ ํ†ตํ•ด ๊ฐ์ฒด์˜ ํ•„๋“œ์™€ ๋ฉ”์†Œ๋“œ์˜ ์‚ฌ์šฉ ๋ฒ”์œ„๋ฅผ ์ œํ•œํ•œ๋‹ค(๋‹ค๋ฅธ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ฐ์ดํ„ฐ ์ž…/์ถœ๋ ฅ์„ ์ œํ•œ).

2) ์ถ”์ƒํ™”(Abstraction) : ์‹ค์ฒด ๊ฐ„์— ๊ณตํ†ต๋˜๋Š” ํŠน์„ฑ์„ ์ถ”์ถœํ•˜์—ฌ ๋‹จ์ˆœํ™” ์‹œํ‚ค๋Š” ๊ฒƒ์ด๋‹ค. 
 - ์ถ”์ƒ ํด๋ž˜์Šค๋Š” ์ถ”์ƒ ๋ฉ”์„œ๋“œ๋กœ ๊ผญ ๊ตฌํ˜„ํ•ด์•ผ ํ•˜๋Š” ๋ฉ”์„œ๋“œ ๋“ฑ์˜ ๊ทœ๊ฒฉ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๊ณ , ์ž์‹ ์ด์™ธ์— ๊ฐ์ฒดํ™” ์‹œํ‚ฌ ์ˆ˜ ์—†๋‹ค.
 - ์‹ค์ฒด ํด๋ž˜์Šค๊ฐ€ ์ถ”์ƒ ํด๋ž˜์Šค๋ฅผ ์ƒ์†๋ฐ›์œผ๋ฉด ์ถ”์ƒ ๋ฉ”์„œ๋“œ๋ฅผ ๊ฐ•์ œ๋กœ ์˜ค๋ฒ„๋ผ์ด๋“œ ํ•˜๊ฒŒ ๋œ๋‹ค.

3) ๋‹คํ˜•์„ฑ(Polymorphism) : ๊ฐ™์€ ํƒ€์ž…์ด์ง€๋งŒ ์‹คํ–‰ ๊ฒฐ๊ณผ๊ฐ€ ๋‹ค์–‘ํ•œ ๊ฐ์ฒด๋ฅผ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์„ฑ์งˆ. ์ž์‹ ๊ฐ์ฒด๊ฐ€ ๋ถ€๋ชจ ๊ฐ์ฒด ํ˜•ํƒœ์˜ ๋ณ€์ˆ˜์— ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ๋‹ค. ๋‹จ, ๋ถ€๋ชจ ํ˜•ํƒœ์˜ ๋ณ€์ˆ˜์— ๋“ค์–ด๊ฐ€๋ฉด ์ž์‹ ๊ณ ์œ ์˜ ๊ธฐ๋Šฅ์„ ์“ธ ์ˆ˜ ์—†๋‹ค.

4) ์ƒ์†(Inheritance) : ์ƒ์œ„ ๊ฐ์ฒด๋Š” ์ž๊ธฐ๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ํ•„๋“œ์™€ ๋ฉ”์†Œ๋“œ๋ฅผ ํ•˜์œ„ ๊ฐ์ฒด์—๊ฒŒ ๋ฌผ๋ ค์ฃผ์–ด ํ•˜์œ„ ๊ฐ์ฒด๊ฐ€ ์›๋ž˜ ๋‚ด ๊ฒƒ ์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ค€๋‹ค. 
 - ๋ฐ˜๋ณต๋œ ์ฝ”๋“œ์˜ ์ค‘๋ณต์„ ์ค„์—ฌ์ค€๋‹ค. ์ƒ์œ„๊ฐ์ฒด์˜ ์ˆ˜์ •์œผ๋กœ ๋ชจ๋“  ํ•˜์œ„ ๊ฐ์ฒด๋“ค์˜ ์ˆ˜์ • ํšจ๊ณผ๋ฅผ ๊ฐ€์ ธ์˜ค๋ฏ€๋กœ ์œ ์ง€ ๋ณด์ˆ˜ ์‹œ๊ฐ„์„ ์ตœ์†Œํ™” ์‹œ์ผœ์ค€๋‹ค.

 

- spring

1. try-catch ์™€ throw์˜ ์ฐจ์ด

1) ์˜ˆ์™ธ์ฒ˜๋ฆฌ : ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๊ฒฝ์šฐ ํ”„๋กœ๊ทธ๋žจ์˜ ๊ฐ‘์ž‘์Šค๋Ÿฌ์šด ์ข…๋ฃŒ๋ฅผ ๋ง‰๊ณ , ์ •์ƒ ์‹คํ–‰์„ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ฒ˜๋ฆฌํ•˜๋Š” ์ฝ”๋“œ

2. DI ์™€ IOC ์— ๋Œ€ํ•œ ์„ค๋ช…, IOC๊ฐ€ ํ•„์š”ํ•œ ์ด์œ 

3. Framework ์™€ Library ์˜ ์ฐจ์ด

4. filter ์™€ intersector ์˜ ์ฐจ์ด

5. AOP ๋ž€ ๋ฌด์—‡์ธ๊ฐ€

6. transaction ์ด ํ•„์š”ํ•œ ์ด์œ 

7. mvc ํŒจํ„ด์ด ๋ฌด์—‡์ธ์ง€ ์„ค๋ช…ํ•˜๊ณ  ์žฅ์ ์„ ์„œ์ˆ ํ•˜๋ผ.