Annotation
μ΄λ
Έν
μ΄μ
(@
, Annotation) μ΄λ JDK 5 λΆν° λ±μ₯ν κΈ°μ λ‘ μ£Όμμ΄λΌκ³ λ κ°λ¨ν ννλμμ§λ§ μ΄λ
Έν
μ΄μ
μ ꡬνλ μ 보μ λ°λΌ μ½λμ μ°κ²° λ°©ν₯μ±μ΄ κ²°μ λλ€.
λΉμ§λμ€ λ‘μ§μλ μν₯μ μ£Όμ§ μμ§λ§ ν΄λΉ νκ²μ μ°κ²°λ°©λ²μ΄λ μμ€μ½λμ ꡬ쑰λ₯Ό κ²°μ μ§λ μ€μν κΈ°λ₯μ ν μλ μλ€.
μ΄λ Έν μ΄μ μ μμ€ μ½λμ λ©ν μ 보λ₯Ό μ½μ νλκ² μ΄κΈ° λλ¬Έμ μ μ΄μ©νλ©΄ ꡬλ μ± λΏλ§μ΄ μλλΌ μ²΄κ³μ μΈ μμ€μ½λ ꡬμ±μ λμμ μ€λ€.
컀μ€ν μ΄λ Έν μ΄μ
μ΄λ
Έν
μ΄μ
μ κΈ°λ³Έμ μΌλ‘ μΈν°νμ΄μ€ ννλ₯Ό μ·¨νκ³ μμΌλ©° interface
μμ @
νμλ₯Ό ν΄μ€λ€.
μ΄λ
Έν
μ΄μ
νλμμλ enum
String
μ΄λ κΈ°λ³Έ μλ£ν νΉμ κΈ°λ³Έ μλ£νμ λ°°μ΄λ€μ μ¬μ©ν μ μλ€.
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface CustomAnnotation {
boolean isCheck() default true;
}
@Target
- μ΄λ Έν μ΄μ μ΄ μ μ©λ μμΉλ₯Ό μ νν©λλ€.
μ ν | μ€λͺ |
---|---|
ElementType.PACKAGE | ν¨ν€μ§ μ μΈ |
ElementType.TYPE | νμ μ μΈ |
ElementType.ANNOTATION_TYPE | μ΄λ Έν μ΄μ νμ μ μΈ |
ElementType.CONSTRUCTOR | μμ±μ μ μΈ |
ElementType.FIELD | λ©€λ² λ³μ μ μΈ |
ElementType.LOCAL_VARIABLE | μ§μ λ³μ μ μΈ |
ElementType.METHOD | λ©μλ μ μΈ |
ElementType.PARAMETER | μ λ¬μΈμ μ μΈ |
ElementType.TYPE_PARAMETER | μ λ¬μΈμ νμ μ μΈ |
ElementType.TYPE_USE | νμ μ μΈ |
@Retention
- μλ° μ»΄νμΌλ¬κ° μ΄λ Έν μ΄μ μ λ€λ£¨λ λ°©λ²μ κΈ°μ νλ©° νΉμ μμ κΉμ§ μν₯μ λ―ΈμΉλμ§ κ²°μ νλ€.
μ ν | μ€λͺ |
---|---|
RetentionPolicy.SOURCE | μ»΄νμΌ μ κΉμ§λ§ μ ν¨ μ»΄νμΌ μ΄νμλ μ¬λΌμ§ |
RetentionPolicy.CLASS | μ»΄νμΌλ¬κ° ν΄λμ€λ₯Ό μ°Έμ‘°ν λκΉμ§ μ ν¨. |
RetentionPolicy.RUNTIME | μ»΄νμΌ μ΄νμλ JVMμ μν΄ κ³μ μ°Έμ‘°κ° κ°λ₯. 리νλ μ μ¬μ© |
@Documented
- ν΄λΉ μ΄λ Έν μ΄μ μ Javadoc μ ν¬ν¨μν΅λλ€.
@Inherited
- μ΄λ Έν μ΄μ μ μμμ κ°λ₯νκ² ν©λλ€.
@Repeatable
- JDK8 λΆν° μ§μ
- μ°μμ μΌλ‘ μ΄λ Έν μ΄μ μ μΈν μ μκ² μ§μν΄μ€λ€.
Java μμ μ 곡
@Override
- μ μΈν λ©μλκ° μ€λ²λΌμ΄λ λ¨
- μμ (λΆλͺ¨) ν΄λμ€ (νΉμ μΈν°νμ΄μ€) μμ ν΄λΉ λ©μλλ₯Ό μ°Ύμ μ μλ€λ©΄ μ»΄νμΌ μλ¬λ₯Ό λ°μμν¨λ€.
@Deprecated
- ν΄λΉ λ©μλκ° λ μ΄μ μ¬μ©λμ§ μμμ νμ
- λ§μ½ μ¬μ©ν κ²½μ° μ»΄νμΌ κ²½κ³ λ₯Ό λ°μ
@SuppressWarnings
- μ μΈν κ³³μ μ»΄νμΌ κ²½κ³ λ₯Ό 무μνλλ‘ νλ€.
@SafeVarargs
- JDK 7 λΆν° μ§μ
- μ λ€λ¦ κ°μ κ°λ³ μΈμμ 맀κ°λ³μλ₯Ό μ¬μ©ν λμ κ²½κ³ λ₯Ό 무μ
@FunctionalInterface
- JDK 8 λΆν° μ§μ
- ν¨μν μΈν°νμ΄μ€λ₯Ό μ§μ
- λ©μλκ° μ‘΄μ¬νμ§ μκ±°λ, 1κ° μ΄μμ λ©μλ (
default
λ©μλ μ μΈ) κ° μ‘΄μ¬ν κ²½μ° μ»΄νμΌ μ€λ₯λ₯Ό λ°μ
μ°Έκ³ μλ£
http://www.nextree.co.kr/p5864/
https://elfinlas.github.io/2017/12/14/java-annotation/
https://elfinlas.github.io/2017/12/14/java-custom-anotation-01/
Spring μμ μ 곡
@ComponentScan
@Transactional
μ½λκΈ°λ° νΈλμμ μ²λ¦¬ (Programmatic Transaction) λΏλ§μ΄ μλλΌ μ μΈμ νΈλμμ (Declarative Transaction) μ μ§μ
μ€νλ§μμ μ 곡νλ νΈλμμ ν νλ¦Ώ ν΄λμ€λ₯Ό μ΄μ©νκ±°λ μ€μ νμΌ, μ΄λ Έν μ΄μ μ μ΄μ©νμ¬ νΈλμμ λ²μ λ° κ·μΉμ μ μν μ μλ€.
β Thread Design Pattern μ΄λ? β