[Java] Annotation (์–ด๋…ธํ…Œ์ด์…˜) ์ด๋ž€?

2023. 7. 15. 16:22ใ†๊ฐœ๋… ์ •๋ฆฌ ์ž‘์—…์‹ค/Java

728x90
๋ฐ˜์‘ํ˜•

 




 

์Šคํ”„๋ง ๋ถ€ํŠธ 3 ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž ๋˜๊ธฐ : ์ž๋ฐ” ํŽธ

COUPANG

www.coupang.com

"์ด ํฌ์ŠคํŒ…์€ ์ฟ ํŒก ํŒŒํŠธ๋„ˆ์Šค ํ™œ๋™์˜ ์ผํ™˜์œผ๋กœ, ์ด์— ๋”ฐ๋ฅธ ์ผ์ •์•ก์˜ ์ˆ˜์ˆ˜๋ฃŒ๋ฅผ ์ œ๊ณต๋ฐ›์Šต๋‹ˆ๋‹ค."

 

 

 

 

๐Ÿš€ Annotaion (์–ด๋…ธํ…Œ์ด์…˜) ์ด๋ž€?

    ๐Ÿ”ฝ ๊ฐœ์š”

        ๐Ÿ“ฆ ์†Œ๊ฐœ

Annotation์€ ์•„๋ž˜์™€ ๊ฐ™์ด ์ •๋ฆฌํ•  ์ˆ˜ ์žˆ์–ด์š”.

โˆ™ ์‚ฌ์ „์  ์˜๋ฏธ๋กœ ์ฃผ์„์ด๋ผ๋Š” ๋œป
โˆ™ Java์—์„œ Annotaion์€ Code ์‚ฌ์ด์— ์ฃผ์„์ฒ˜๋Ÿผ ์“ฐ์ด๋ฉฐ, ํŠน๋ณ„ํ•œ ์˜๋ฏธ, ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•˜๋„๋ก ํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธ
   - ํ”„๋กœ๊ทธ๋žจ์—๊ฒŒ ์ถ”๊ฐ€์  ์ •๋ณด ์ œ๊ณต์„ ์œ„ํ•œ ๋ฉ”ํƒ€ ๋ฐ์ดํ„ฐ
   - ๋ฉ”ํƒ€ ๋ฐ์ดํ„ฐ๋ž€? ๋ฐ์ดํ„ฐ๋ฅผ ์œ„ํ•œ ๋ฐ์ดํ„ฐ๋กœ ๋ฐ์ดํ„ฐ์˜ ๋Œ€ํ•œ ์†์ • ์ •๋ณด๋ฅผ ์˜๋ฏธ.
                              ๋„์„œ๊ด€์„ ์˜ˆ๋ฅผ ๋“ค์ž๋ฉด ํ‘œ์ œ, ์ €์ž, ์ฃผ์ œ, ๋ถ„๋ฅ˜ ๊ธฐํ˜ธ ๋“ฑ์ด ํฌํ•จ ๋œ ๋ชฉ๋กํ™” ๋œ ๋ฐ์ดํ„ฐ


์‚ฌ์šฉ ์ˆœ์„œ

1. ์–ด๋…ธํ…Œ์ด์…˜ ์ •์˜
2. Class์— ์–ด๋…ธํ…Œ์ด์…˜ ์ž‘์„ฑ
3. ์ฝ”๋“œ ์‹คํ–‰ ์ค‘ Reflection์„ ์ด์šฉ ์ถ”๊ฐ€ ์ •๋ณด ํš๋“ํ•˜์—ฌ ๊ธฐ๋Šฅ ์ˆ˜ํ–‰

 

728x90

 

        ๐Ÿ“ฆ Annotation ์ข…๋ฅ˜

โˆ™ ํ‘œ์ค€(๋‚ด์žฅ) : ์ž๋ฐ”๊ฐ€ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ œ๊ณตํ•˜๋Š” ์–ด๋…ธํ…Œ์ด์…˜
โˆ™ ๋ฉ”ํƒ€ : ์–ด๋…ธํ…Œ์ด์…˜์„ ์œ„ํ•œ ์–ด๋…ธํ…Œ์ด์…˜
โˆ™ ์‚ฌ์šฉ์ž ์ •์˜ : ๊ฐœ๋ฐœ์ž๊ฐ€ ์ง์ ‘ ์ •์˜ํ•œ ์–ด๋…ธํ…Œ์ด์…˜

 

 

๋ฐ˜์‘ํ˜•

 

        ๐Ÿ“ฆ Reflection์ด๋ž€?

โˆ™ ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰ ์ค‘ ์ž์‹ ์˜ ๊ตฌ์กฐ์™€ ๋™์ž‘์„ ๊ฒ€์‚ฌ, ์กฐ์‚ฌ, ์ˆ˜์ •ํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธ.
โˆ™ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด์—ฌ์ฃผ๊ณ , ๋‹ค๋ฅธ ํฌ๋งท์˜ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ, ํ†ต์‹ ์„ ์œ„ํ•ด serializaion(์ง๋ ฌํ™”)๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ณ , bundling ํ•˜๊ธฐ
   ์œ„ํ•ด ์ผ๋ฐ˜ ์†Œํ”„ํŠธ์›จ์–ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋งŒ๋“ค๋„๋ก ๋„์™€์ค€๋‹ค.
โˆ™ ์ž๋ฐ”์™€ ๊ฐ™์€ ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์—์„œ Reflection ์‚ฌ์šฉ ์‹œ ์ปดํŒŒ์ผ ๋‹จ๊ณ„์— Interface, Field, Method
   ์ด๋ฆ„์„ ์•Œ์ง€ ๋ชปํ•ด๋„ ์‹คํ–‰ ์ค‘ Class, Interface, Field ๋ฐ Method ์ ‘๊ทผ ๊ฐ€๋Šฅ.
โˆ™ ์ƒˆ๋กœ์šด ๊ฐ์ฒด์˜ ๊ฐ์ฒด(์ธ์Šคํ„ด์Šค)ํ™” ๋ฐ ๋ฉ”์†Œ๋“œ ํ˜ธ์ถœ ํ—ˆ์šฉ.
โˆ™ ์ž๋ฐ”์™€ ๊ฐ™์€ ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์—์„œ Reflection ์‚ฌ์šฉ ์‹œ member ์ ‘๊ทผ ๊ฐ€๋Šฅ์„ฑ ๊ทœ์น™ ๋ฌด์‹œ ๊ฐ€๋Šฅ.
โˆ™ ์Šคํ”„๋ง์—์„œ BeanFactory๋ผ๋Š” Container์—์„œ ๊ฐ์ฒด ํ˜ธ์ถœ ์‹œ ๊ฐ์ฒด์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•˜๊ฒŒ ๋˜๋Š”๋ฐ, ์ด ๋•Œ ํ•„์š”.
   ์ฆ‰, ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ ์œ ์—ฐ์„ฑ ์žˆ๋Š” ๋™์ž‘์„ ์œ„ํ•ด ์‚ฌ์šฉ.
โˆ™ ์–ด๋…ธํ…Œ์ด์…˜ ์ž์ฒด๋Š” ์•„๋ฌด ๋™์ž‘์„ ๊ฐ€์ง€์ง€ ์•Š๋Š” ๋‹จ์ˆœ ์ฃผ์„(ํ‘œ์‹)์ผ ๋ฟ์ด์ง€๋งŒ, Reflection ์ด์šฉ ์‹œ ์–ด๋…ธํ…Œ์ด์…˜ ์ ์šฉ ์—ฌ๋ถ€์™€
    ์—˜๋ฆฌ๋จผํŠธ ๊ฐ’์„ ์ฝ๊ณ , ์ฒ˜๋ฆฌ.
โˆ™ ํด๋ž˜์Šค์— ์ ์šฉ๋œ ์–ด๋…ธํ…Œ์ด์…˜ ์ •๋ณด๋ฅผ ์ฝ์œผ๋ ค๋ฉด java.lang.Class ์ด์šฉ, ํ•„๋“œ, ์ƒ์„ฑ์ž, ๋ฉ”์†Œ๋“œ์— ์ ์šฉ๋œ ์–ด๋…ธํ…Œ์ด์…˜ ์ •๋ณด๋ฅผ
   ์ฝ์œผ๋ ค๋ฉด ํด๋ž˜์Šค ๋ฉ”์†Œ๋“œ๋ฅผ ํ†ตํ•ด java.lang.reflect Package์˜ ๋ฐฐ์—ด์„ ์–ป์–ด์•ผ ํ•จ.
   - Class.forName(), getName(), getModifier(), getFields(), getPackage() ๋“ฑ ์—ฌ๋Ÿฌ ๋ฉ”์†Œ๋“œ๋กœ ์ •๋ณด ๊ฐ€์ ธ์˜ด.
โˆ™ Reflection ์ด์šฉ ์‹œ ์–ด๋…ธํ…Œ์ด์…˜ ์ง€์ •๋งŒ์œผ๋กœ ์›ํ•˜๋Š” ํด๋ž˜์Šค์— ์ฃผ์ž… ๊ฐ€๋Šฅ.

 

 

 

 

์Šคํ”„๋ง ๋ถ€ํŠธ 3 ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž ๋˜๊ธฐ : ์ž๋ฐ” ํŽธ

COUPANG

www.coupang.com

"์ด ํฌ์ŠคํŒ…์€ ์ฟ ํŒก ํŒŒํŠธ๋„ˆ์Šค ํ™œ๋™์˜ ์ผํ™˜์œผ๋กœ, ์ด์— ๋”ฐ๋ฅธ ์ผ์ •์•ก์˜ ์ˆ˜์ˆ˜๋ฃŒ๋ฅผ ์ œ๊ณต๋ฐ›์Šต๋‹ˆ๋‹ค."

 

 

 

 

 

 

728x90
๋ฐ˜์‘ํ˜•