Reflection

๋ฆฌํ”Œ๋ ‰์…˜(Reflection)

๊ฐ์ฒด์˜ ๊ตฌ์ฒด์ ์ธ ํด๋ž˜์Šค ํƒ€์ž…์„ ์•Œ์ง€ ๋ชปํ•ด๋„ ํ•ด๋‹น ํด๋ž˜์Šค์˜ ์ •๋ณด(ํ•„๋“œ, ๋ฉ”์†Œ๋“œ ๋“ฑ)์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๊ธฐ๋ฒ•

Java์—์„œ๋Š” Reflection API๋ฅผ ์ œ๊ณตํ•˜์—ฌ ๋ฆฌํ”Œ๋ ‰์…˜ ๊ธฐ๋ฒ•์„ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•จ

Java Reflection API๋ฅผ ํ†ตํ•ด ํ•  ์ˆ˜ ์žˆ๋Š” ์ผ

  • ํด๋ž˜์Šค ์–ป์–ด์˜ค๊ธฐ

  • ๋ฉ”์†Œ๋“œ ์–ป์–ด์˜ค๊ธฐ

  • ๋ฉ”์†Œ๋“œ ๋ชฉ๋ก(๋ฐฐ์—ด) ์–ป์–ด์˜ค๊ธฐ

  • ๋ฉ”์†Œ๋“œ ์‹คํ–‰ํ•˜๊ธฐ

  • ํ•„๋“œ ์–ป์–ด์˜ค๊ธฐ

  • ํ•„๋“œ ๋ชฉ๋ก(๋ฐฐ์—ด) ์–ป์–ด์˜ค๊ธฐ

  • ์ƒ์„ฑ์ž ์–ป์–ด์˜ค๊ธฐ

  • ์ƒ์„ฑ์ž๋ฅผ ํ†ตํ•œ ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ

  • ๊ธฐํƒ€ ๋“ฑ๋“ฑ

๋™์ž‘ ์›๋ฆฌ

๋Ÿฐํƒ€์ž„์— JVM์ด JVM memory area ์ค‘ static area์— ์ €์žฅ๋œ ํด๋ž˜์Šค ์ •๋ณด๋ฅผ ํƒ์ƒ‰ํ•˜๊ณ , ์ด๋ฅผ ์ด์šฉํ•œ๋‹ค.

์–ธ์ œ ์‚ฌ์šฉํ•˜๋Š”๊ฐ€?

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

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

Spring์˜ Reflection ์‚ฌ์šฉ์ฒ˜

โญ Reflection API๋Š” ์ƒ์„ฑ์ž์˜ ์ธ์ž ์ •๋ณด๋Š” ํš๋“ํ•  ์ˆ˜ ์—†๋‹ค. ๋”ฐ๋ผ์„œ, Spring๊ณผ ๊ฐ™์ด ํƒ€์ž…์„ ์•Œ ์ˆ˜ ์—†๋Š” ์ƒํƒœ์—์„œ ๋™์ ์œผ๋กœ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด ๋ฆฌํ”Œ๋ ‰์…˜์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ, ๋ฐ˜๋“œ์‹œ ํ•ด๋‹น ํด๋ž˜์Šค ๋‚ด์— ๊ธฐ๋ณธ ์ƒ์„ฑ์ž๊ฐ€ ์กด์žฌํ•ด์•ผ๋งŒ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

์ถœ์ฒ˜

Last updated