1. JVM์˜ ๊ตฌ์กฐ์™€ Java์˜ ์‹คํ–‰๋ฐฉ์‹ ์„ค๋ช…
  2. GC๊ฐ€ ๋ฌด์—‡์ธ์ง€, ํ•„์š”ํ•œ ์ด์œ ์™€ ๋™์ž‘๋ฐฉ์‹
  3. ์ปฌ๋ ‰์…˜ ํ”„๋ ˆ์ž„์›Œํฌ
  4. ์ œ๋„ˆ๋ฆญ
  5. ์–ด๋…ธํ…Œ์ด์…˜
  6. ์˜ค๋ฒ„๋ผ์ด๋”ฉ๊ณผ ์˜ค๋ฒ„๋กœ๋”ฉ์ด ๋ฌด์—‡์ด๋ฉฐ ์ฐจ์ด์ 

1. JVM์˜ ๊ตฌ์กฐ์™€ Java์˜ ์‹คํ–‰๋ฐฉ์‹ ์„ค๋ช…

Question

JVM์ด๋ž€ ๋ฌด์—‡์ด๊ณ , ์–ด๋–ค ๊ตฌ์กฐ๋กœ ๋˜์–ด์žˆ๋‚˜์š”?

JVM์€ Java Virtual Machine์œผ๋กœ Java ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋˜๋Š” ํ™˜๊ฒฝ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. JVM์€ ๋ฉ”์„œ๋“œ ์˜์—ญ, ํž™ ์˜์—ญ, ์Šคํƒ ์˜์—ญ, PC ๋ ˆ์ง€์Šคํ„ฐ, ๋„ค์ดํ‹ฐ๋ธŒ ๋ฉ”์„œ๋“œ ์Šคํƒ์œผ๋กœ ๋‚˜๋‰ฉ๋‹ˆ๋‹ค.

Question

Java ํ”„๋กœ๊ทธ๋žจ์ด ์–ด๋–ป๊ฒŒ ์‹คํ–‰๋˜๋Š”์ง€ ์„ค๋ช…ํ•ด๋ณด์„ธ์š”

Java ์ฝ”๋“œ๋Š” ์ปดํŒŒ์ผ๋Ÿฌ์— ์˜ํ•ด ๋ฐ”์ดํŠธ์ฝ”๋“œ๋กœ ๋ณ€ํ™˜๋˜๋ฉฐ, JVM์€ ์ด ๋ฐ”์ดํŠธ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

Question

JVM์ด ๋‹ค๋ฅธ ํ”Œ๋žซํผ์— ๋…๋ฆฝ์ ์ธ ์ด์œ ๋Š” ๋ฌด์—‡์ธ๊ฐ€์š”?

Java ํ”„๋กœ๊ทธ๋žจ์ด ๋…๋ฆฝ์ ์ธ ๋ฐ”์ดํŠธ์ฝ”๋“œ์ธ .class ํŒŒ์ผ๋กœ ์ปดํŒŒ์ผ๋˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. Java ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ์ปดํŒŒ์ผํ•  ๋•Œ ์ƒ์„ฑํ•˜๋Š” ๋ฐ”์ดํŠธ์ฝ”๋“œ๋Š” ํŠน์ • ํ”Œ๋žซํผ์— ์ข…์†๋˜์ง€ ์•Š๊ณ  JVM๋งŒ ์„ค์น˜๋˜์–ด์žˆ์œผ๋ฉด ๋™์ผํ•˜๊ฒŒ ์‹คํ–‰๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

2. ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜์ด ๋ฌด์—‡์ธ์ง€, ํ•„์š”ํ•œ ์ด์œ ์™€ ๋™์ž‘๋ฐฉ์‹

๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ๋ฐฉ๋ฒ• ์ค‘ ํ•˜๋‚˜๋กœ, ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ๋™์ ์œผ๋กœ ํ• ๋‹นํ•œ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ ์ค‘ ๋” ์ด์ƒ ์“ฐ์ด์ง€ ์•Š๋Š” ์˜์—ญ์„ ์ž๋™์œผ๋กœ ์ฐพ์•„๋‚ด์–ด ํ•ด์ œํ•˜๋Š” ๊ธฐ๋Šฅ

Question

GC์˜ ์‹คํ–‰์‹œ์ ์€?

์ผ๋ฐ˜์ ์œผ๋กœ JVM์ด ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋ถ€์กฑํ•˜๊ฑฐ๋‚˜ ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜ ์œ„ํ—˜์ด ๊ฐ์ง€๋  ๋•Œ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

Question

GC๊ฐ€ ์–ด๋–ค ์›๋ฆฌ์— ์˜ํ•ด ๋™์ž‘ํ•˜๋Š”์ง€ ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”

GC๋Š” ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ์˜ ์ž๋™ํ™”๋ฅผ ์œ„ํ•ด JVM ๋‚ด์—์„œ ๋” ์ด์ƒ ์ฐธ์กฐ๋˜์ง€ ์•Š๊ฑฐ๋‚˜ ์ ‘๊ทผํ•  ์ˆ˜ ์—†๋Š” ๊ฐ์ฒด๋ฅผ ํƒ์ง€ํ•˜๊ณ  ํšŒ์ˆ˜ํ•˜๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์ธ ์›๋ฆฌ๋Š” Mark and Sweep ์•Œ๊ณ ๋ฆฌ์ฆ˜์ž…๋‹ˆ๋‹ค. Mark ๋‹จ๊ณ„์—์„œ๋Š” ํž™ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์Šค์บ”ํ•˜์—ฌ ์•„์ง ์ฐธ์กฐ์ค‘์ธ ๊ฐ์ฒด๋ฅผ ๋งˆํ‚นํ•˜๊ณ , Sweep ๋‹จ๊ณ„์—์„œ ๋งˆํ‚น๋˜์ง€ ์•Š์€ ๊ฐ์ฒด๋Š” ๋” ์ด์ƒ ์ฐธ์กฐ๋˜์ง€ ์•Š์œผ๋ฏ€๋กœ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ํ•ด์ œ๋ฉ๋‹ˆ๋‹ค.

Question

Minor GC์™€ Major GC์˜ ์ฐจ์ด์ 

Minor GC์™€ Major GC๋Š” ํž™ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์„œ๋กœ ๋‹ค๋ฅธ ์˜์—ญ์„ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค. Minor GC๋Š” Young Generation์„ ๋Œ€์ƒ์œผ๋กœ ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค. Young Generation์—๋Š” ์ƒˆ๋กœ ์ƒ์„ฑ๋œ ๊ฐ์ฒด๋“ค์ด ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค. Minor GC๋Š” ์ž์ฃผ ๋ฐœ์ƒํ•˜๋ฉฐ, ์‹œ๊ฐ„์ด ์งง๊ณ  ํšจ์œจ์ ์ž…๋‹ˆ๋‹ค. Major GC๋Š” Old Generation์„ ๋Œ€์ƒ์œผ๋กœ ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค. Young Generation์—์„œ ์‚ด์•„๋‚จ์€ ๊ฐ์ฒด๊ฐ€ Old Generation์œผ๋กœ ์ด๋™ํ•˜๋ฉฐ, Stop-the-World ์ด๋ฒคํŠธ๋ฅผ ์ผ์œผ์ผœ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋ชจ๋“  ์Šค๋ ˆ๋“œ๋ฅผ ์ผ์‹œ์ ์œผ๋กœ ์ค‘๋‹จ์‹œํ‚ค๊ธฐ ๋•Œ๋ฌธ์— ์„ฑ๋Šฅ์— ์˜ํ–ฅ์„ ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Question

C์–ธ์–ด์—์„œ์˜ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜ ์ฒ˜๋ฆฌ์™€ Java์—์„œ์˜ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜ ์ฒ˜๋ฆฌ์˜ ์ฐจ์ด์ 

C์–ธ์–ด๋Š” free()๊ฐ™์€ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด ์ง์ ‘ ์ฒ˜๋ฆฌํ•ด์•ผํ•˜์ง€๋งŒ Java์—์„œ๋Š” JVM์ด ์ž๋™์œผ๋กœ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

3. ์ปฌ๋ ‰์…˜ ํ”„๋ ˆ์ž„์›Œํฌ

๋ฐ์ดํ„ฐ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ์ €์žฅํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ํ‘œ์ค€ํ™”๋œ ํด๋ž˜์Šค์™€ ์ธํ„ฐํŽ˜์ด์Šค์˜ ์ง‘ํ•ฉ

List

  • ๊ฐ์ฒด๋ฅผ ์ผ๋ ฌ๋กœ ๋Š˜์–ด๋†“์€ ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉฐ ๊ฐ์ฒด๋ฅผ ์ธ๋ฑ์Šค๋กœ ๊ด€๋ฆฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ธ๋ฑ์Šค๋กœ ๊ฐ์ฒด๋ฅผ ๊ฒ€์ƒ‰, ์‚ญ์ œ ํ•  ์ˆ˜ ์žˆ์Œ

Set

  • List๋Š” ์ค‘๋ณต์„ ํ—ˆ์šฉํ•˜๊ณ  ์ธ๋ฑ์Šค๋ฅผ ํ†ตํ•ด ๊ฐ์ฒด๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐ˜๋ฉด, Set์€ ์ค‘๋ณต์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š์œผ๋ฉฐ ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Œ (์ˆœ์„œ ๋ฌด๊ด€)

Map

  • key-value ํ˜•ํƒœ๋กœ ๊ฐ์ฒด ์ €์žฅ
  • key๋Š” ์ค‘๋ณต ์ €์žฅ๋  ์ˆ˜ ์—†์ง€๋งŒ value๋Š” ์ค‘๋ณต ์ €์žฅ ๊ฐ€๋Šฅ
  • ์ €์žฅ ์ˆœ์„œ๋ฅผ ์œ ์ง€ํ•˜์ง€ ์•Š์Œ

Question

List์™€ Set์˜ ์ฐจ์ด์ ์€ ๋ฌด์—‡์ธ๊ฐ€์š”?

List๋Š” ์ค‘๋ณต์„ ํ—ˆ์šฉํ•˜๋ฉฐ ์ˆœ์„œ๊ฐ€ ์žˆ๋Š” ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ์ œ๊ณตํ•˜๊ณ , Set์€ ์ค‘๋ณต์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š์œผ๋ฉฐ ์ˆœ์„œ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

4. Generic

ํด๋ž˜์Šค ๋‚ด๋ถ€์—์„œ ์‚ฌ์šฉํ•  ๋ฐ์ดํ„ฐ ํƒ€์ž…์„ ์™ธ๋ถ€์—์„œ ์ง€์ •ํ•˜๋Š” ๊ธฐ๋ฒ•, ๊ฐ์ฒด๋ณ„๋กœ ๋‹ค๋ฅธ ํƒ€์ž…์˜ ์ž๋ฃŒ๊ฐ€ ์ €์žฅ๋  ์ˆ˜ ์žˆ๋„๋ก ํ•จ

String[] array = new String[10];
ArrayList<String> list = new ArrayList<>(10);

Question

Generic์„ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ธ๊ฐ€์š”?

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

Question

์ปฌ๋ ‰์…˜ ํด๋ž˜์Šค์—์„œ ์ œ๋„ˆ๋ฆญ์„ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ๊ฐ€ ๋ฌด์—‡์ธ๊ฐ€์š”?

ํƒ€์ž… ์•ˆ์ •์„ฑ์„ ๋ณด์žฅํ•˜๊ณ , ์ปฌ๋ ‰์…˜์—์„œ ๊ฐ์ฒด๋ฅผ ๊ฐ€์ ธ์˜ฌ ๋•Œ ๋ช…์‹œ์ ์ธ ํ˜• ๋ณ€ํ™˜์ด ํ•„์š”ํ•˜์ง€ ์•Š์•„ ์ฝ”๋“œ๊ฐ€ ๊ฐ„๊ฒฐํ•˜๊ณ  ์˜ค๋ฅ˜ ๋ฐœ์ƒ ๊ฐ€๋Šฅ์„ฑ์„ ์ค„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์–ด๋–ค ํƒ€์ž…์˜ ๊ฐ์ฒด๊ฐ€ ์ปฌ๋ ‰์…˜์— ์ €์žฅ๋ ์ง€ ๋ช…์‹œ์ ์ด๋ฏ€๋กœ ์ฝ”๋“œ์˜ ๊ฐ€๋…์„ฑ์ด ๋†’์•„์ง‘๋‹ˆ๋‹ค.

Question

Object๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  Generic์„ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ธ๊ฐ€์š”?

Object๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ์ปฌ๋ ‰์…˜์—์„œ ๊ฐ์ฒด๋ฅผ ๊ฐ€์ ธ์˜ฌ ๋•Œ๋งˆ๋‹ค ํ˜• ๋ณ€ํ™˜์„ ํ•ด์•ผํ•˜๋ฉฐ ๋Ÿฐํƒ€์ž„ ์—๋Ÿฌ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด ์ œ๋„ˆ๋ฆญ์„ ์‚ฌ์šฉํ•˜๋ฉด ์ปดํŒŒ์ผ ์‹œ์ ์— ํƒ€์ž…์„ ๊ฒ€์‚ฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๋Ÿฌํ•œ ์œ„ํ—˜์„ ์ค„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

5. Annotation

์ž๋ฐ” ์†Œ์Šค์ฝ”๋“œ์— ์ถ”๊ฐ€ํ•˜์—ฌ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ผ์ข…์˜ ๋ฉ”ํƒ€ ๋ฐ์ดํ„ฐ

Question

Annotaion์ด๋ž€ ๋ฌด์—‡์ด๊ณ , ๊ตฌ์ฒด์ ์œผ๋กœ ์–ด๋–ค ๊ฒƒ์ด ์žˆ๋Š”์ง€ ์˜ˆ์‹œ๋ฅผ ๋“ค์–ด ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”

Annotation์€ ์ž๋ฐ” ์ฝ”๋“œ์—์„œ ์ถ”๊ฐ€์ ์ธ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•˜๋Š” ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ์ž…๋‹ˆ๋‹ค. Annotation์„ ์‚ฌ์šฉํ•จ์œผ๋กœ์จ ์ฝ”๋“œ์— ๋Œ€ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ •์˜ํ•˜๊ณ  ์‹คํ–‰ ์‹œ๊ฐ„์— ๋ถ„์„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด @Override๋Š” ๋ฉ”์„œ๋“œ๊ฐ€ ์ƒ์œ„ ํด๋ž˜์Šค์˜ ๋ฉ”์„œ๋“œ๋ฅผ ์˜ค๋ฒ„๋ผ์ด๋“œํ•œ๋‹ค๋Š” ๊ฒƒ์„ ๋‚˜ํƒ€๋‚ด๋ฉฐ @Deprecated๋Š” ๋ฉ”์„œ๋“œ๋‚˜ ํด๋ž˜์Šค๊ฐ€ ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์Šคํ”„๋ง์—์„œ๋Š” @Autowired๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ž๋™์œผ๋กœ ์˜์กด์„ฑ์„ ์ฃผ์ž…ํ•ฉ๋‹ˆ๋‹ค. Annotation์€ ํ”„๋กœ๊ทธ๋žจ์— ์ถ”๊ฐ€์ ์ธ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•˜๊ณ , ์ฝ”๋“œ์˜ ๊ฐ€๋…์„ฑ๊ณผ ์œ ์ง€๋ณด์ˆ˜์„ฑ์„ ํ–ฅ์ƒ์‹œํ‚ค๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.

Question

Annotation์„ ์‚ฌ์šฉํ•  ๋•Œ ์ปดํŒŒ์ผ ์‹œ๊ฐ„๊ณผ ์‹คํ–‰ ์‹œ๊ฐ„์— ์–ด๋–ค ๋ฐฉ์‹์œผ๋กœ ์ฒ˜๋ฆฌ๋˜๋‚˜์š”?

์ปดํŒŒ์ผ ์‹œ๊ฐ„์— ์ฒ˜๋ฆฌ๋˜๋Š” Annotation์€ ์ฝ”๋“œ ๊ฒ€์ฆ, ๋ฌธ์„œ ์ƒ์„ฑ ๋“ฑ์˜ ๋ชฉ์ ์œผ๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด @Override๋Š” ๋ฉ”์„œ๋“œ๊ฐ€ ์‹ค์ œ๋กœ ์˜ค๋ฒ„๋ผ์ด๋“œ ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฐ ์ฒ˜๋ฆฌ๋Š” ๊ฐœ๋ฐœ ๋‹จ๊ณ„์—์„œ ์ฝ”๋“œ ์˜ค๋ฅ˜๋ฅผ ์ค„์—ฌ์ฃผ๊ณ  ์•ˆ์ •์„ฑ์„ ๋†’์—ฌ์ค๋‹ˆ๋‹ค. ์‹คํ–‰์‹œ๊ฐ„์— ์ฒ˜๋ฆฌ๋˜๋Š” Annotation์€ ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ์ค‘ ํ•ด๋‹น ์ •๋ณด๋ฅผ ์ฝ๊ณ  ์ •๋ณด์— ๋”ฐ๋ผ ๋™์ž‘์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์Šคํ”„๋ง ํ”„๋ ˆ์ž„์›Œํฌ์˜ @Autowired๋Š” ์‹คํ–‰ ์‹œ๊ฐ„์— ์˜์กด์„ฑ ์ฃผ์ž…์„ ์ž๋™์œผ๋กœ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฐ ์ฒ˜๋ฆฌ๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ ์ง์ ‘์ ์œผ๋กœ ๊ด€๋ฆฌ ๋กœ์ง์„ ์ž‘์„ฑํ•˜์ง€ ์•Š์•„๋„ ๋˜์–ด ์ฝ”๋“œ์˜ ๋ณต์žก์„ฑ์„ ์ค„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@Controller, @Service, @Repository, @Component ์ฒ˜๋ฆฌ ์‹œ๊ฐ„์€?

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‹คํ–‰ ์‹œ์ ์ธ ๋Ÿฐํƒ€์ž„์— ์ฒ˜๋ฆฌ๋จ

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์‹œ์ž‘๋  ๋•Œ ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ๊ฐ€ annotation์ด ๋ถ™์€ ํด๋ž˜์Šค๋“ค์„ ์Šค์บ”ํ•˜๊ณ  ์ด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ bean์œผ๋กœ ๋“ฑ๋ก

6. ์˜ค๋ฒ„๋กœ๋”ฉ๊ณผ ์˜ค๋ฒ„๋ผ์ด๋”ฉ

์˜ค๋ฒ„๋กœ๋”ฉ

  • ๊ฐ™์€ ์ด๋ฆ„์˜ ๋ฉ”์„œ๋“œ๋ฅผ ๋‹ค๋ฅธ ๋งค๊ฐœ๋ณ€์ˆ˜ ๋ชฉ๋ก์œผ๋กœ ์—ฌ๋Ÿฌ๋ฒˆ ์ •์˜ํ•˜๋Š” ๊ฒƒ
  • ์ฃผ๋กœ ๊ฐ™์€ ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•˜์ง€๋งŒ ๋งค๊ฐœ๋ณ€์ˆ˜ ์œ ํ˜•์ด๋‚˜ ๊ฐœ์ˆ˜์— ๋”ฐ๋ผ ๋‹ค๋ฅธ ์ฒ˜๋ฆฌ๋ฅผ ํ•˜๊ณ ์‹ถ์„ ๋•Œ ์‚ฌ์šฉ
  • ๋ฐ˜ํ™˜ ํƒ€์ž…๋งŒ ๋‹ค๋ฅด๊ณ  ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ๋™์ผํ•˜๋‹ค๋ฉด ์˜ค๋ฒ„๋กœ๋”ฉ์ด ์„ฑ๋ฆฝ๋˜์ง€ ์•Š์Œ
  • ์ปดํŒŒ์ผ ์‹œ์ ์— ๊ฒฐ์ •
public class Calculator {
    public int add(int a, int b) {
        return a + b;
    }
 
    public double add(double a, double b) {
        return a + b;
    }
 
    public int add(int a, int b, int c) {
        return a + b + c;
    }
}

์˜ค๋ฒ„๋ผ์ด๋”ฉ

  • ์ƒ์† ๊ด€๊ณ„์—์„œ ๋ถ€๋ชจ ํด๋ž˜์Šค์˜ ๋ฉ”์„œ๋“œ๋ฅผ ์ž์‹ ํด๋ž˜์Šค์—์„œ ์žฌ์ •์˜ํ•˜๋Š” ๊ฒƒ
  • ๋ถ€๋ชจํด๋ž˜์Šค์—์„œ ์ •์˜๋œ ๋ฉ”์„œ๋“œ๋ฅผ ์ž์‹ ํด๋ž˜์Šค์—์„œ ์žฌ๊ตฌํ˜„ํ•˜์—ฌ ๋‹ค๋ฅธ ๋™์ž‘์„ ํ•˜๋„๋ก ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Œ
  • ๋ฉ”์„œ๋“œ ์ด๋ฆ„, ๋งค๊ฐœ๋ณ€์ˆ˜ ๋ชฉ๋ก, ๋ฐ˜ํ™˜ ํƒ€์ž…์ด ๋ถ€๋ชจ ํด๋ž˜์Šค์˜ ๋ฉ”์„œ๋“œ์™€ ๋™์ผํ•ด์•ผ ํ•จ
  • ์ ‘๊ทผ ์ œ์–ด์ž๋Š” ๋ถ€๋ชจ ํด๋ž˜์Šค์˜ ๋ฉ”์„œ๋“œ๋ณด๋‹ค ์ข์€ ๋ฒ”์œ„๋กœ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†์Œ (publicโ†’ private ๋ถˆ๊ฐ€)
  • @Override ์• ๋„ˆํ…Œ์ด์…˜์„ ๋ถ™์—ฌ ์˜ค๋ฒ„๋ผ์ด๋”ฉ์ด ์ œ๋Œ€๋กœ ๋˜์—ˆ๋Š”์ง€ ํ™•์ธ ๊ฐ€๋Šฅ
  • ๋Ÿฐํƒ€์ž„ ์‹œ์ ์— ๊ฒฐ์ •
class Parent {
    public void showMessage() {
        System.out.println("Hello from Parent");
    }
}
 
class Child extends Parent {
    @Override
    public void showMessage() {
        System.out.println("Hello from Child");
    }
}

Question

์˜ค๋ฒ„๋กœ๋”ฉ๊ณผ ์˜ค๋ฒ„๋ผ์ด๋”ฉ์˜ ์ •์˜๋ฅผ ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”

์˜ค๋ฒ„๋กœ๋”ฉ์€ ๊ฐ™์€ ์ด๋ฆ„์˜ ๋ฉ”์„œ๋“œ๋ฅผ ๋งค๊ฐœ๋ณ€์ˆ˜๋‚˜ ํƒ€์ž…์„ ๋‹ค๋ฅด๊ฒŒ ํ•˜์—ฌ ์—ฌ๋Ÿฌ๋ฒˆ ์ •์˜ํ•˜๋Š”๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์˜ค๋ฒ„๋ผ์ด๋”ฉ์€ ๋ถ€๋ชจ ํด๋ž˜์Šค์˜ ๋ฉ”์„œ๋“œ๋ฅผ ์ž์‹ ํด๋ž˜์Šค์—์„œ ์žฌ์ •์˜ํ•˜๋Š”๊ฒƒ์„ ์˜๋ฏธํ•˜๋ฉฐ ๋ฉ”์„œ๋“œ์˜ ์‹œ๊ทธ๋‹ˆ์ฒ˜๊ฐ€ ๋™์ผํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

Question

์˜ค๋ฒ„๋ผ์ด๋”ฉ์‹œ ๋ฐ˜๋“œ์‹œ ์ง€์ผœ์•ผ ํ•˜๋Š” ๊ทœ์น™์€ ๋ฌด์—‡์ธ๊ฐ€์š”?

๋ฉ”์„œ๋“œ ์ด๋ฆ„, ๋งค๊ฐœ๋ณ€์ˆ˜ ๋ชฉ๋ก, ๋ฐ˜ํ™˜ ํƒ€์ž…์ด ๋™์ผํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ถ€๋ชจ ํด๋ž˜์Šค์˜ ๋ฉ”์„œ๋“œ๋ณด๋‹ค ์ข์€ ๋ฒ”์œ„์˜ ์ ‘๊ทผ ์ œ์–ด์ž๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋ถ€๋ชจ ํด๋ž˜์Šค์˜ ๋ฉ”์„œ๋“œ๊ฐ€ ๋˜์งˆ ์ˆ˜ ์žˆ๋Š” ์˜ˆ์™ธ๋ณด๋‹ค ๋„“์€ ์˜ˆ์™ธ๋ฅผ ๋˜์งˆ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

Question

์˜ค๋ฒ„๋กœ๋”ฉ์ด ์ž๋ฐ”์˜ ๋‹คํ˜•์„ฑ์— ์–ด๋–ค ์—ญํ• ์„ ํ•˜๋‚˜์š”?

์˜ค๋ฒ„๋กœ๋”ฉ์€ ์ž๋ฐ”์˜ ์ปดํŒŒ์ผํƒ€์ž… ๋‹คํ˜•์„ฑ์„ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ• ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. ๊ฐ™์€ ์ด๋ฆ„์˜ ๋ฉ”์„œ๋“œ๋ฅผ ์—ฌ๋Ÿฌ ํ˜•ํƒœ๋กœ ์ •์˜ํ•˜์—ฌ ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ํƒ€์ž…์ด๋‚˜ ๊ฐœ์ˆ˜์— ๋”ฐ๋ผ ์„œ๋กœ ๋‹ค๋ฅธ ๋ฉ”์„œ๋“œ๊ฐ€ ํ˜ธ์ถœ๋˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์œ ์—ฐ์„ฑ๊ณผ ๊ฐ€๋…์„ฑ์ด ํ–ฅ์ƒ๋ฉ๋‹ˆ๋‹ค.


Question

JIT(Just-In-Time) ์ปดํŒŒ์ผ๋Ÿฌ์™€ ์ธํ„ฐํ”„๋ฆฌํ„ฐ์˜ ์ฐจ์ด์ ์€ ๋ฌด์—‡์ธ๊ฐ€์š”?

์ปดํŒŒ์ผ๋Ÿฌ๋Š” ์ „์ฒด ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ๋ณด๊ณ  ๋ช…๋ น์–ด๋ฅผ ์ˆ˜์ง‘ํ•˜๊ณ  ์žฌ๊ตฌ์„ฑํ•˜์ง€๋งŒ, ์ธํ„ฐํ”„๋ฆฌํ„ฐ๋Š” ์†Œ์Šค์ฝ”๋“œ์˜ ๊ฐ ํ–‰์„ ์—ฐ์†์ ์œผ๋กœ ๋ถ„์„ํ•˜๋ฉฐ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. JIT ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ๋ฐ˜๋ณต ์‹คํ–‰ ์†๋„๊ฐ€ ๋น ๋ฅด์ง€๋งŒ ์ดˆ๊ธฐ์†๋„๊ฐ€ ๋А๋ฆฌ๊ณ , ์ธํ„ฐํ”„๋ฆฌํ„ฐ๋Š” ์ดˆ๊ธฐ ์‹คํ–‰์€ ๋น ๋ฅด์ง€๋งŒ ๋ฐ˜๋ณต ์‹คํ–‰์€ ๋А๋ฆฝ๋‹ˆ๋‹ค.

Question

JIT๊ฐ€ ์„ฑ๋Šฅ ์ตœ์ ํ™”๋ฅผ ์–ด๋–ป๊ฒŒ ๋•๋Š”์ง€ ์„ค๋ช…ํ•˜์„ธ์š”.

ํ•ซ์ŠคํŒŸ ์ตœ์ ํ™” : ์ž์ฃผ ์‹คํ–‰๋˜๋Š” ์ฝ”๋“œ๋ฅผ ๋„ค์ดํ‹ฐ๋ธŒ ์ฝ”๋“œ๋กœ ๋ณ€ํ™˜ํ•ด ์บ์‹ฑ ์ธ๋ผ์ด๋‹ : ์ž์ฃผ ํ˜ธ์ถœ๋˜๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ์ฝ”๋“œ์— ์‚ฝ์ž…ํ•ด ํ˜ธ์ถœ ์˜ค๋ฒ„ํ—ค๋“œ ์ œ๊ฑฐ ๋ฃจํ”„ ์ตœ์ ํ™” : ๋ฐ˜๋ณต๋ฌธ์„ ํšจ์œจ์ ์œผ๋กœ ๋ณ€ํ™˜ํ•ด ์„ฑ๋Šฅ ํ–ฅ์ƒ ๋Ÿฐํƒ€์ž„ ํ”„๋กœํŒŒ์ผ๋ง : ์‹คํ–‰ ํ”ผํ„ด์„ ๋ถ„์„ํ•ด ํ•„์š”ํ•œ ๋ถ€๋ถ„๋งŒ ์ง‘์ค‘ ์ตœ์ ํ™”

JIT๋Š” ๋ฐ˜๋ณต์ ์œผ๋กœ ์‹คํ–‰๋˜๋Š” ์ฝ”๋“œ์˜ ์†๋„๋ฅผ ๋†’์—ฌ ๋Ÿฐํƒ€์ž„์—์„œ ์ตœ์ ํ™”๋œ ๋„ค์ดํ‹ฐ๋ธŒ ์ฝ”๋“œ๋ฅผ ์ƒ์„ฑํ•ด ์„ฑ๋Šฅ์„ ๊ทน๋Œ€ํ™”ํ•ฉ๋‹ˆ๋‹ค.