λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
JAVA/Spring

Spring μ»€μŠ€ν…€ Annotation (@Target, @Retention)

by soyλ―Έλ‹ˆ 2023. 9. 19.

 

 

μƒˆλ‘œμš΄ νŒ€μ— λ“€μ–΄μ™€μ„œ λ°±μ—”λ“œ μ½”λ“œλ₯Ό 보닀가 μ»€μŠ€ν…€ 된 μ–΄λ…Έν…Œμ΄μ…˜μ„ λ°œκ²¬ν–ˆλ‹€.

μ–΄λ…Έν…Œμ΄μ…˜λ„ μ»€μŠ€ν…€μ΄ λ˜λ‹€λ‹ˆ..! μ‹ κΈ°ν•΄μ„œ μ»€μŠ€ν…€ μ–΄λ…Έν…Œμ΄μ…˜μ— λŒ€ν•΄ μ•Œμ•„λ³΄μ•˜λ‹€.

 

@μ»€μŠ€ν…€μ–΄λ…Έν…Œμ΄μ…˜ λͺ…

 

ν”νžˆ μ•„λŠ” μ–΄λ…Έν…Œμ΄μ…˜μ—λŠ” @Controller @Service 등이 μžˆλŠ”λ°, 이듀은 μ—¬λŸ¬ κΈ°λŠ₯(μ–΄λ…Έν…Œμ΄μ…˜) 을 ν¬ν•¨ν•˜κ³  μžˆλ‹€. μ–΄λ…Έν…Œμ΄μ…˜μ˜ λ§Žμ€ κΈ°λŠ₯ 쀑 ν•„μš”ν•œ κΈ°λŠ₯만 μ‚¬μš©ν•  수 μžˆλ„λ‘ μ»€μŠ€ν…€ ν•œ 것이 μ»€μŠ€ν…€ μ–΄λ…Έν…Œμ΄μ…˜μ΄λ‹€. μ»€μŠ€ν…€ μ–΄λ…Έν…Œμ΄μ…˜μ€ @Target κ³Ό @Retention λ“± meta annotation 을 μ‚¬μš©ν•˜μ—¬ μ»€μŠ€ν…€ν•  수 μžˆλŠ”λ°, μ΄λŸ¬ν•œ meta annotation 은 λ³΄ν†΅ λ‹€λ₯Έ μ–΄λ…Έν…Œμ΄μ…˜ 생성 μ‹œμ—λ„ ν¬ν•¨λ˜λŠ” μ–΄λ…Έν…Œμ΄μ…˜μ΄λΌκ³  ν•œλ‹€. λ‚΄κ°€ λ°œκ²¬ν•œ μ»€μŠ€ν…€ μ–΄λ…Έν…Œμ΄μ…˜μ€ @Target @Retention 두 가지 μ–΄λ…Έν…Œμ΄μ…˜μ„ ν¬ν•¨ν•˜κ³  μžˆμ—ˆλ‹€.

 

 

@Target

- μžλ°” μ»΄νŒŒμΌλŸ¬κ°€ ν•΄λ‹Ή μ–΄λ…Έν…Œμ΄μ…˜μ„ 어디에 μ μš©ν• μ§€ κ²°μ •ν•˜κΈ° μœ„ν•΄ μ‚¬μš©λœλ‹€.

- νƒ€μž… μ„ μ–Έ

ElementType.TYPE
ElementType.TYPE_USE
ElementType.ANNOTATION_TYPE
ElementType.METHOD
ElementType.PARAMETER
ElementType.TYPE_PARAMETER
ElementType.PACKAGE
ElementType.CONSTRUCTOR
ElementType.FIELD
ElementType.LOCAL_VARIABLE

 

@Retention

- Policy κ΄€λ ¨ μ–΄λ…Έν…Œμ΄μ…˜

- μ–΄λ…Έν…Œμ΄μ…˜μ΄ μ‹€μ œλ‘œ 적용되고 μœ μ§€λ˜λŠ” λ²”μœ„λ₯Ό λ‚˜νƒ€λ‚Έλ‹€.

RetentionPolicy.CLASS
RetentionPolicy.RUNTIME
RetentionPolicy.SOURCE

 

 

λŒ“κΈ€