[JAVA] 20. μ• λ„ˆν…Œμ΄μ…˜ Annotation, 메타 μ• λ„ˆν…Œμ΄μ…˜, ν”„λ‘œμ„ΈμŠ€μ™€ μ“°λ ˆλ“œ

2022. 5. 17. 21:09ㆍJAVA/μžλ°”μ˜ 정석

728x90

https://hyejin.tistory.com/587

 

[JAVA] 19. μ§€λ„€λ¦­μŠ€ Generics(μ™€μΌλ“œ μΉ΄λ“œ, 지넀릭 λ©”μ„œλ“œ, 지넀릭 νƒ€μž…μ˜ ν˜•λ³€ν™˜, 지넀릭 νƒ€μž…μ˜ 제

https://hyejin.tistory.com/586 [JAVA] 18. μ§€λ„€λ¦­μŠ€ Generics 1️⃣ μ§€λ„€λ¦­μŠ€ Generics μ§€λ„€λ¦­μŠ€λŠ” λ‹€μ–‘ν•œ νƒ€μž…μ˜ 객체듀을 λ‹€λ£¨λŠ” λ©”μ„œλ“œλ‚˜ μ»¬λ ‰μ…˜ ν΄λž˜μŠ€μ— 컴파일 μ‹œμ˜ νƒ€μž… 체크λ₯Ό ν•΄μ£ΌλŠ” κΈ°λŠ₯이닀. 객체의

hyejin.tistory.com

 

1️⃣ ν‘œμ€€ μ• λ„ˆν…Œμ΄μ…˜ annotation 

 

@Override

: λ©”μ„œλ“œ μ•žμ—λ§Œ 뢙일 수 μžˆλŠ” μ• λ„ˆν…Œμ΄μ…˜μœΌλ‘œ, μ‘°μƒμ˜ λ©”μ„œλ“œλ₯Ό μ˜€λ²„λΌμ΄λ”©ν•˜λŠ” κ²ƒμ΄λΌλŠ” κ±Έ μ»΄νŒŒμΌλŸ¬μ—κ²Œ μ•Œλ €μ£ΌλŠ” 역할을 ν•œλ‹€. 

 

@Deprecated

: 더 이상 μ‚¬μš©λ˜μ§€ μ•ŠλŠ” ν•„λ“œλ‚˜ λ©”μ„œλ“œμ— @Deprecatedλ₯Ό λΆ™μ΄λŠ” 것이닀. 

이 μ• λ„ˆν…Œμ΄μ…˜μ΄ 뢙은 λŒ€μƒμ€ λ‹€λ₯Έ κ²ƒμœΌλ‘œ λŒ€μ²΄λ˜μ—ˆμœΌλ‹ˆ 더 이상 μ‚¬μš©ν•˜μ§€ μ•Šμ„ 것을 κΆŒν•œλ‹€λŠ” μ˜λ―Έμ΄λ‹€.

 

@FunctionalInterface

: ν•¨μˆ˜ν˜• μΈν„°νŽ˜μ΄μŠ€λ₯Ό μ„ μ–Έν•  λ•Œ, 이 μ• λ„ˆν…Œμ΄μ…˜μ„ 뢙이면 μ»΄νŒŒμΌλŸ¬κ°€ ν•¨μˆ˜ν˜• μΈν„°νŽ˜μ΄μŠ€λ₯Ό μ˜¬λ°”λ₯΄κ²Œ μ„ μ–Έν–ˆλŠ”μ§€ ν™•μΈν•˜κ³ , 잘λͺ»λœ 경우 μ—λŸ¬λ₯Ό λ°œμƒμ‹œν‚¨λ‹€. 

(ν•¨μˆ˜ν˜• μΈν„°νŽ˜μ΄μŠ€λŠ” 좔상 λ©”μ„œλ“œκ°€ ν•˜λ‚˜λΏμ΄μ–΄μ•Ό ν•œλ‹€λŠ” μ œμ•½μ΄ μžˆλ‹€.) 

@SuppressWarnings

μ»΄νŒŒμΌλŸ¬κ°€ λ³΄μ—¬μ£ΌλŠ” κ²½κ³ λ©”μ‹œμ§€κ°€ λ‚˜νƒ€λ‚˜μ§€ μ•Šκ²Œ μ–΅μ œν•΄μ€€λ‹€.

이전 μ˜ˆμ œμ—μ„œμ²˜λŸΌ 컴파일러의 κ²½κ³ λ©”μ‹œμ§€λŠ” λ¬΄μ‹œν•˜κ³  λ„˜μ–΄κ°ˆ 수 μžˆμ§€λ§Œ, λͺ¨λ‘ ν™•μΈν•˜κ³  ν•΄κ²°ν•΄μ„œ 컴파일 후에 μ–΄λ– ν•œ λ©”μ‹œμ§€λ„ λ‚˜νƒ€λ‚˜μ§€ μ•Šκ²Œ ν•΄μ•Ό ν•œλ‹€. 

κ·ΈλŸ¬λ‚˜ κ²½μš°μ— λ”°λΌμ„œλŠ” κ²½κ³ κ°€ λ°œμƒν•  것을 μ•Œλ©΄μ„œλ„ 묡인해야 ν•  λ•Œκ°€ μžˆλŠ”λ°, 이 κ²½κ³ λ₯Ό κ·ΈλŒ€λ‘œ 놔두면 μ»΄νŒŒμΌν•  λ•Œ λ§ˆλ‹€ λ©”μ‹œμ§€κ°€ λ‚˜νƒ€λ‚œλ‹€. 

-> μ΄λ•ŒλŠ” λ¬΅μΈν•΄μ•Όν•˜λŠ” κ²½κ³ κ°€ λ°œμƒν•˜λŠ” λŒ€μƒμ— λ°˜λ“œμ‹œ @SuppressWarnigns λ₯Ό λΆ™μ—¬μ„œ 컴파일 후에 μ–΄λ–€ κ²½κ³  λ©”μ‹œμ§€λ„ λ‚˜νƒ€λ‚˜μ§€ μ•Šκ²Œ ν•΄μ•Όν•œλ‹€. 

@SuppressWarnings 둜 μ–΅μ œν•  수 μžˆλŠ” κ²½κ³  λ©”μ‹œμ§€μ˜ μ’…λ₯˜λŠ” μ—¬λŸ¬κ°€μ§€ μžˆλŠ”λ° deprecation, unchecked, rawtypes, varargs 등이 μžˆλ‹€. 

deprecation 은 μ•žμ„œ λ³Έ 것과 같이 @Deprecation 이 뢙은 λŒ€μƒμ„ μ‚¬μš©ν•΄μ„œ λ°œμƒν•˜λŠ” κ²½κ³  

unchecked λŠ” μ§€λ„€λ¦­μŠ€λ‘œ νƒ€μž…μ„ μ§€μ •ν•˜μ§€ μ•Šμ•˜μ„ λ•Œ λ°œμƒν•˜λŠ” κ²½κ³  

rawtypesλŠ” μ§€λ„€λ¦­μŠ€λ₯Ό μ‚¬μš©ν•˜μ§€ μ•Šμ•„μ„œ λ°œμƒν•˜λŠ” κ²½κ³  

varargs λŠ” κ°€λ³€μΈμžμ˜ νƒ€μž…μ΄ 지넀릭 νƒ€μž…μΌ λ•Œ λ°œμƒν•˜λŠ” κ²½κ³ λ₯Ό μ–΅μ œν•  λ•Œ μ‚¬μš©ν•œλ‹€. 

 

main λ©”μ„œλ“œ μ•žμ— @SuppressWarnings("deprecation")을 λΆ™μ—¬μ„œ 이 λ©”μ„œλ“œ λ‚΄μ—μ„œ μΌμ–΄λ‚˜λŠ” deprecationκ³Ό κ΄€λ ¨λœ λͺ¨λ“  κ²½κ³ κ°€ λ‚˜νƒ€λ‚˜μ§€ μ•Šκ²Œ ν•œλ‹€. 

그리고 νƒ€μž…μ„ μ§€μ •ν•˜μ§€ μ•Šμ€ ArrayListλ₯Ό μƒμ„±ν•œ 곳에 @SuppressWarnings("unchecked")λ₯Ό λΆ™μ—¬μ„œ κ²½κ³ λ₯Ό μ–΅μ œν–ˆλ‹€. 

 

 

 

2️⃣ 메타 μ• λ„ˆν…Œμ΄μ…˜ 

메타 μ• λ„ˆν…Œμ΄μ…˜μ€ μ• λ„ˆν…Œμ΄μ…˜μ„ μœ„ν•œ μ• λ„ˆν…Œμ΄μ…˜, 즉 μ• λ„ˆν…Œμ΄μ…˜μ— λΆ™μ΄λŠ” μ• λ„ˆν…Œμ΄μ…˜μœΌλ‘œ μ• λ„ˆν…Œμ΄μ…˜μ„ μ •μ˜ν•  λ•Œ μ• λ„ˆν…Œμ΄μ…˜μ˜ μ μš©λŒ€μƒμ΄λ‚˜ μœ μ§€κΈ°κ°„ 등을 μ§€μ •ν•˜λŠ”λ° μ‚¬μš©λœλ‹€. 

 

@Target 

: μ• λ„ˆν…Œμ΄μ…˜μ΄ 적용 κ°€λŠ₯ν•œ λŒ€μƒμ„ μ§€μ •ν•˜λŠ”λ° μ‚¬μš©λœλ‹€.

-> FILEDλŠ” κΈ°λ³Έν˜•, TYPE_USEλŠ” μ°Έμ‘°ν˜•μ— μ‚¬μš©λœλ‹€.

 

@Retention

: μ• λ„ˆν…Œμ΄μ…˜μ΄ μœ μ§€λ˜λŠ” 기간을 μ§€μ •ν•˜λŠ”λ° μ‚¬μš©λœλ‹€. 

SOURCE :μ»΄νŒŒμΌλŸ¬κ°€ μ‚¬μš©ν•˜λŠ” μ• λ„ˆν…Œμ΄μ…˜ ex) @Override, @SuppressWarnings 

RUNTIME : μ‹€ν–‰μ‹œμ— λ¦¬ν”Œλ ‰μ…˜μ„ 톡해 클래슀 νŒŒμΌμ— μ €μž₯된 μ• λ„ˆν…Œμ΄μ…˜μ˜ 정보λ₯Ό μ½μ–΄μ„œ μ²˜λ¦¬ν•  수 μžˆλ‹€.

CLASS: μ»΄νŒŒμΌλŸ¬κ°€ μ• λ„ˆν…Œμ΄μ…˜μ˜ 정보λ₯Ό 클래슀 νŒŒμΌμ— μ €μž₯ν•  수 μžˆκ²ŒλŠ” ν•˜μ§€λ§Œ, 클래슀 파일이 jvm에 λ‘œλ”©λ λ•ŒλŠ” μ• λ„ˆν…Œμ΄μ…˜μ˜ 정보가 λ¬΄μ‹œλ˜μ–΄ μ‹€ν–‰ μ‹œμ— μ• λ„ˆν…Œμ΄μ…˜μ— λŒ€ν•œ 정보λ₯Ό 얻을 수 μ—†λ‹€. 

 

@Documented 

: μ• λ„ˆν…Œμ΄μ…˜μ— λŒ€ν•œ 정보가 javadoc으둜 μž‘μ„±ν•œ λ¬Έμ„œμ— ν¬ν•¨λ˜λ„λ‘ ν•œλ‹€. 

μžλ°”μ—μ„œ μ œκ³΅ν•˜λŠ” κΈ°λ³Έ μ• λ„ˆν…Œμ΄μ…˜ μ€‘μ—μ„œ @Override 와 @SuppressWarnings λ₯Ό μ œμ™Έν•˜κ³ λŠ” λͺ¨λ‘ 메타 μ• λ„ˆν…Œμ΄μ…˜μ΄ λΆ™μ–΄ μžˆλ‹€. 

 

@Inherited

: μ• λ„ˆν…Œμ΄μ…˜μ΄ μžμ† ν΄λž˜μŠ€μ— μƒμ†λ˜λ„λ‘ ν•œλ‹€. @Inherited κ°€ 뢙은 μ• λ„ˆν…Œμ΄μ…˜μ„ 쑰상 ν΄λž˜μŠ€μ— 뢙이면, μžμ† ν΄λž˜μŠ€λ„ 이 μ• λ„ˆν…Œμ΄μ…˜μ΄ 뢙은 것과 같이 μΈμ‹λœλ‹€. 

 

@Repeatable

: 이 μ• λ„ˆν…Œμ΄μ…˜μ΄ 뢙은 μ• λ„ˆν…Œμ΄μ…˜μ€ μ—¬λŸ¬λ²ˆ 뢙일 수 μžˆλ‹€. 

-> 이건 일반적인 μ• λ…Έν…Œμ΄μ…˜κ³Ό 달리 같은 μ΄λ¦„μ˜ μ• λ„ˆν…Œμ΄μ…˜μ΄ μ—¬λŸ¬ κ°œκ°€ ν•˜λ‚˜μ˜ λŒ€μƒμ— μ μš©ν•  수 있기 λ•Œλ¬Έμ—, 

이 μ• λ„ˆν…Œμ΄μ…˜λ“€μ„ ν•˜λ‚˜λ‘œ λ¬Άμ–΄μ„œ λ‹€λ£° 수 μžˆλŠ” μ• λ„ˆν…Œμ΄μ…˜λ„ μΆ”κ°€λ‘œ μ •μ˜ν•΄μ•Ό ν•œλ‹€. 

 

 

@Native

: λ„€μ΄ν‹°λΈŒ λ©”μ„œλ“œμ— μ˜ν•΄ μ°Έμ‘°λ˜λŠ” μƒμˆ˜ν•„λ“œμ— λΆ™μ΄λŠ” μ• λ„ˆν…Œμ΄μ…˜μ΄λ‹€. 

 

 

3️⃣ μ• λ„ˆν…Œμ΄μ…˜ νƒ€μž… μ •μ˜ν•˜κΈ° 

-> '@' 기호λ₯Ό λΆ™μ΄λŠ” 것을 μ œμ™Έν•˜λ©΄ μΈν„°νŽ˜μ΄μŠ€λ₯Ό μ •μ˜ν•˜λŠ” 것과 λ™μΌν•˜λ‹€. 

μ• λ„ˆν…Œμ΄μ…˜ 내에 μ„ μ–Έλœ λ©”μ„œλ“œλ₯Ό μ• λ„ˆν…Œμ΄μ…˜μ˜ μš”μ†ŒλΌκ³  ν•œλ‹€. 

 

μ• λ„ˆν…Œμ΄μ…˜μ˜ μš”μ†ŒλŠ” λ°˜ν™˜κ°’μ΄ 있고, λ§€κ°œλ³€μˆ˜λŠ” μ—†λŠ” 좔상 λ©”μ„œλ“œμ˜ ν˜•νƒœλ₯Ό 가지며, 상속을 톡해 κ΅¬ν˜„ν•˜μ§€ μ•Šμ•„λ„ λœλ‹€.

λ‹€λ§Œ μ• λ„ˆν…Œμ΄μ…˜μ„ μ μš©ν•  λ•Œ 이 μš”μ†Œλ“€μ˜ 값을 빠짐없이 지정해주어야 ν•œλ‹€. 

(μ΄λ•Œ μˆœμ„œλŠ” 상관없닀.)

 

μ• λ„ˆν…Œμ΄μ…˜μ˜ 각 μš”μ†ŒλŠ” 기본값을 κ°€μ§ˆ 수 있으며, 기본값이 μžˆλŠ” μš”μ†ŒλŠ” μ• λ„ˆν…Œμ΄μ…˜μ„ μ μš©ν•  λ•Œ 값을 μ§€μ •ν•˜μ§€ μ•ŠμœΌλ©΄ 기본값이 μ‚¬μš©λœλ‹€. 

 

μ• λ„ˆν…Œμ΄μ…˜ μš”μ†Œκ°€ 였직 ν•˜λ‚˜λΏμ΄κ³  이름이 value인 경우, μ• λ„ˆν…Œμ΄μ…˜μ„ μ μš©ν•  λ•Œ μš”μ†Œμ˜ 이름을 μƒλž΅ν•˜κ³  κ°’λ§Œ 적어도 λœλ‹€. 

μš”μ†Œ νƒ€μž…μ΄ 배열인 경우 κ΄„ν˜Έ{}λ₯Ό μ‚¬μš©ν•΄μ„œ μ—¬λŸ¬ 개의 값을 지정할 수 μžˆλ‹€. 

 

4️⃣ 마컀 μ• λ„ˆν…Œμ΄μ…˜ Marker Annotation

값을 지정할 ν•„μš”κ°€ μ—†λŠ” 경우, μ• λ„ˆν…Œμ΄μ…˜μ˜ μš”μ†Œλ₯Ό ν•˜λ‚˜λ„ μ •μ˜ν•˜μ§€ μ•Šμ„ 수 μžˆλ‹€.

- μ• λ„ˆν…Œμ΄μ…˜ μš”μ†Œμ˜ κ·œμΉ™

- μš”μ†Œμ˜ νƒ€μž…μ€ κΈ°λ³Έν˜•, String, enum, μ• λ„ˆν…Œμ΄μ…˜, Class 만 ν—ˆμš©λœλ‹€.
- () μ•ˆμ— λ§€κ°œλ³€μˆ˜λ₯Ό μ„ μ–Έν•  수 μ—†λ‹€.
- μ˜ˆμ™Έλ₯Ό μ„ μ–Έν•  수 μ—†λ‹€.
- μš”μ†Œλ₯Ό νƒ€μž… λ§€κ°œλ³€μˆ˜<T>둜 μ •μ˜ν•  수 μ—†λ‹€. 

-> μ• λ„ˆν…Œμ΄μ…˜μ„ 직접 μ •μ˜ν•˜κ³ , μ• λ„ˆν…Œμ΄μ…˜μ˜ μš”μ†Œμ˜ 값을 좜λ ₯ν•˜λŠ” 방법을 λ³΄μ—¬μ£ΌλŠ” 예제

AnnotationEx5ν΄λž˜μŠ€μ— 적용된 μ• λ„ˆν…Œμ΄μ…˜μ„ μ‹€ν–‰μ‹œκ°„μ— μ–»μœΌλ €λ©΄ 

Class<AnnotationEx5> cls = AnnotationEx5.class;

TestInfo anno = cls.getAnnotation(TestInfo.class);

μ΄λ ‡κ²Œ ν•˜λ©΄ λœλ‹€. 

 

클래슀 객체가 가지고 μžˆλŠ” getAnnotation() μ΄λΌλŠ” λ©”μ„œλ“œμ— λ§€κ°œλ³€μˆ˜λ‘œ 정보λ₯Ό μ–»κ³ μž ν•˜λŠ” μ• λ„ˆν…Œμ΄μ…˜μ„ μ§€μ •ν•΄μ£Όκ±°λ‚˜, getAnnotations()둜 λͺ¨λ“  μ• λ„ˆν…Œμ΄μ…˜μ„ λ°°μ—΄λ‘œ λ°›μ•„μ˜¬ 수 μžˆλ‹€. 

 

 

5️⃣ ν”„λ‘œμ„ΈμŠ€μ™€ μ“°λ ˆλ“œ 

ν”„λ‘œμ„ΈμŠ€ process λž€ 싀행쀑인 ν”„λ‘œκ·Έλž¨μœΌλ‘œ ν”„λ‘œκ·Έλž¨μ„ μ‹€ν–‰ν•˜λ©΄ OSλ‘œλΆ€ν„° 싀행에 ν•„μš”ν•œ μžμ›(λ©”λͺ¨λ¦¬)λ₯Ό ν• λ‹Ήλ°›μ•„ ν”„λ‘œμ„ΈμŠ€κ°€ λœλ‹€. 

ν”„λ‘œμ„ΈμŠ€λŠ” ν”„λ‘œκ·Έλž¨μ„ μˆ˜ν–‰ν•˜λŠ” 데 ν•„μš”ν•œ 데이터와 λ©”λͺ¨λ¦¬ λ“±μ˜ μžμ› 그리고 μ“°λ ˆλ“œλ‘œ κ΅¬μ„±λ˜μ–΄ 있으며 ν”„λ‘œμ„ΈμŠ€μ˜ μžμ›μ„ μ΄μš©ν•΄μ„œ μ‹€μ œλ‘œ μž‘μ—…μ„ μˆ˜ν–‰ν•˜λŠ” 것이 λ°”λ‘œ μ“°λ ˆλ“œμ΄λ‹€. 

 

λͺ¨λ“  ν”„λ‘œμ„ΈμŠ€μ—λŠ” μ΅œμ†Œν•œ ν•˜λ‚˜ μ΄μƒμ˜ μ“°λ ˆλ“œκ°€ μ‘΄μž¬ν•˜λ©°, λ‘˜ μ΄μƒμ˜ μ“°λ ˆλ“œλ₯Ό 가진 ν”„λ‘œμ„ΈμŠ€λ₯Ό λ©€ν‹°μ“°λ ˆλ“œ ν”„λ‘œμ„ΈμŠ€λΌκ³  ν•œλ‹€. 

 

ν•˜λ‚˜μ˜ ν”„λ‘œμ„ΈμŠ€κ°€ κ°€μ§ˆ 수 μžˆλŠ” μ“°λ ˆλ“œμ˜ κ°œμˆ˜λŠ” μ œν•œλ˜μ–΄ μžˆμ§€ μ•ŠμœΌλ‚˜ μ“°λ ˆλ“œκ°€ μž‘μ—…μ„ μˆ˜ν–‰ν•˜λŠ”λ° κ°œλ³„μ μΈ λ©”λͺ¨λ¦¬ 곡간을 ν•„μš”λ‘œ ν•˜κΈ° λ•Œλ¬Έμ— ν”„λ‘œμ„ΈμŠ€μ˜ λ©”λͺ¨λ¦¬ ν•œκ³„μ— 따라 생성할 수 μžˆλŠ” μ“°λ ˆλ“œμ˜ μˆ˜κ°€ κ²°μ •λœλ‹€. 

 

- λ©€ν‹°νƒœμŠ€ν‚Ήκ³Ό λ©€ν‹°μ“°λ ˆλ”©

ν˜„μž¬ μš°λ¦¬κ°€ μ‚¬μš©ν•˜κ³  μžˆλŠ” μœˆλ„μš°λ‚˜ μœ λ‹‰μŠ€λ₯Ό ν¬ν•¨ν•œ λŒ€λΆ€λΆ„μ˜ osλŠ” λ©€ν‹°νƒœμŠ€ν‚Ήμ„ μ§€μ›ν•˜κΈ° λ•Œλ¬Έμ— μ—¬λŸ¬κ°œμ˜ ν”„λ‘œμ„ΈμŠ€κ°€ λ™μ‹œμ— 싀행될 수 μžˆλ‹€. 

λ©€ν‹°μ“°λ ˆλ”©μ€ ν•˜λ‚˜μ˜ ν”„λ‘œμ„ΈμŠ€ λ‚΄μ—μ„œ μ—¬λŸ¬ μ“°λ ˆλ“œκ°€ λ™μ‹œμ— μž‘μ—…μ„ μˆ˜ν–‰ν•˜λŠ” 것이닀. 

cpu의 μ½”μ–΄κ°€ ν•œ λ²ˆμ— 단 ν•˜λ‚˜μ˜ μž‘μ—…λ§Œ μˆ˜ν–‰ν•  수 μžˆμœΌλ―€λ‘œ μ‹€μ œλ‘œ λ™μ‹œμ— μ²˜λ¦¬λ˜λŠ” μž‘μ—…μ˜ κ°œμˆ˜λŠ” μ½”μ–΄μ˜ κ°œμˆ˜μ™€ μΌμΉ˜ν•œλ‹€. 

 

 

- λ©€ν‹°μ“°λ ˆλ”©μ˜ μž₯단점

μž₯점
- cpu의 μ‚¬μš©λ₯ μ„ ν–₯μƒμ‹œν‚¨λ‹€. 
- μžμ›μ„ 보닀 효율적으둜 μ‚¬μš©ν•  수 μžˆλ‹€.
- μ‚¬μš©μžμ— λŒ€ν•œ 응닡성이 ν–₯μƒλœλ‹€. 
- μž‘μ—…μ΄ λΆ„λ¦¬λ˜μ–΄ μ½”λ“œκ°€ 간결해진닀. 

λ©”μ‹ μ €λ‘œ μ±„νŒ…ν•˜λ©΄μ„œ νŒŒμΌμ„ λ‹€μš΄λ‘œλ“œ λ°›κ±°λ‚˜ μŒμ„± λŒ€ν™”λ₯Ό λ‚˜λˆŒ 수 μžˆλŠ” 것이 κ°€λŠ₯ν•œ μ΄μœ κ°€ λ°”λ‘œ λ©€ν‹°μ“°λ ˆλ“œλ‘œ μž‘μ„±λ˜μ–΄ 있기 λ•Œλ¬Έμ΄λ‹€. 

 

단점

-> λ©€ν‹°μ“°λ ˆλ“œ ν”„λ‘œμ„ΈμŠ€λŠ” μ—¬λŸ¬ μ“°λ ˆλ“œκ°€ 같은 ν”„λ‘œμ„ΈμŠ€ λ‚΄μ—μ„œ μžμ›μ„ κ³΅μœ ν•˜λ©΄μ„œ μž‘μ—…μ„ ν•˜κΈ° λ•Œλ¬Έμ— λ°œμƒν•  수 μžˆλŠ” 동기화, κ΅μ°©μƒνƒœμ™€ 같은 λ¬Έμ œλ“€μ„ κ³ λ €ν•΄μ„œ μ‹ μ€‘νžˆ ν”„λ‘œκ·Έλž˜λ°ν•΄μ•Όν•œλ‹€. 

 

 

 

 

 

 

 

 

 

 

 

728x90