🌱Spring @Annotation

Dohyeon KongΒ·2023λ…„ 10μ›” 30일
0

Spring🌱

λͺ©λ‘ 보기
4/11
post-thumbnail

Annotation

μ–΄λ…Έν…Œμ΄μ…˜μ„ μ„Έ 가지 ν•­λͺ©μœΌλ‘œ μ„€λͺ…πŸ€”

  1. μ–΄λ…Έν…Œμ΄μ…˜(annotation)은 '주석'을 μ˜λ―Έν•˜λŠ” μ˜μ–΄ ν‘œν˜„μ΄λ‹€.
  2. '@xxx'와 같은 ν˜•νƒœλ‘œ μž‘μ„±ν•œλ‹€.
  3. μ™ΈλΆ€ μ†Œν”„νŠΈμ›¨μ–΄μ— ν•„μš”ν•œ 처리 λ‚΄μš©μ„ μ „λ‹¬ν•œλ‹€.

μ•žμ„  DIμ»¨ν…Œμ΄λ„ˆ κΈ€μ—μ„œ μΈμŠ€ν„΄μŠ€ 생성 μ–΄λ…Έν…Œμ΄μ…˜μ— λŒ€ν•΄ μž‘μ„±ν•˜μ˜€λ‹€. μ΄λ²ˆμ—λŠ” 4가지 μΈμŠ€ν„΄μŠ€ 생성 μ–΄λ…Έν…Œμ΄μ…˜μ˜ 'κ°€λ €μ“°κΈ°'에 λŒ€ν•΄ μ„€λͺ…ν•˜κ² λ‹€!

'κ°€λ €μ“°κΈ°'λž€ 'λ„€ μ’…λ₯˜ λͺ¨λ‘ μΈμŠ€ν„΄μŠ€ μƒμ„±μ΄λΌλŠ” 역할을 κ°™μ§€λ§Œ. μ‚¬μš©ν•˜λŠ” μœ„μΉ˜μ— 따라 μ–΄λ…Έν…Œμ΄μ…˜μ„ κ°€λ € μ“°μž'λΌλŠ” 것이닀.
μ—¬κΈ°μ„œ μ‚¬μš©ν•˜λŠ” μœ„μΉ˜κ°€ 무엇을 μ˜λ―Έν•˜λŠ”μ§€ κΆκΈˆν• ν…λ° 그러기 μœ„ν•΄μ„œλŠ” λ ˆμ΄μ–΄λΌλŠ” 것을 μ•Œμ•„μ•Ό ν•œλ‹€.

λ ˆμ΄μ–΄λž€?

'μΈ΅'의 의미둜, 계측 ꡬ쑰둜 λ˜μ–΄ μžˆλŠ” 각 측을 μ˜λ―Έν•œλ‹€.
λ ˆμ΄μ–΄λ₯Ό λ‚˜λˆ„λŠ” 방법은 λ‹€μ–‘ν•˜μ§€λ§Œ λ‹€μŒκ³Ό 같이 3가지 λ ˆμ΄μ–΄λ‘œ λ‚˜λˆ„λŠ” λ°©μ‹μœΌλ‘œ μ„€λͺ…ν•˜κ² λ‹€.

도메인 주도 섀계(Domain-Driven-Design) λ ˆμ΄μ–΄

λ ˆμ΄μ–΄κ°œμš”
μ• ν”Œλ¦¬μΌ€μ΄μ…˜ λ ˆμ΄μ–΄(Application Layer)μ• ν”Œλ¦¬μΌ€μ΄μ…˜ λ ˆμ΄μ–΄λŠ” ν΄λΌλ¦¬μ–ΈνŠΈμ™€μ˜ 데이터 μž…μΆœλ ₯을 μ œμ–΄ν•˜λŠ” λ ˆμ΄μ–΄λ₯Ό μ˜λ―Έν•œλ‹€.
도메인 λ ˆμ΄μ–΄
(Domain Layer)
도메인 λ ˆμ΄μ–΄λŠ” μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ 쀑심이 λ˜λŠ” λ ˆμ΄μ–΄λ‘œμ„œ 업무 처리λ₯Ό μˆ˜ν–‰ν•˜λŠ” λ ˆμ΄μ–΄λ₯Ό μ˜λ―Έν•œλ‹€.
μ•ˆν”„λΌμŠ€νŠΈλŸ­μ²˜ λ ˆμ΄μ–΄(Infrastructure Layer)μΈν”„λΌμŠ€νŠΈλŸ­μ²˜ λ ˆμ΄μ–΄λŠ” λ°μ΄ν„°λ² μ΄μŠ€μ— λŒ€ν•œ 데이터 μ˜μ†μ„±(Persistence Context)등을 λ‹΄λ‹Ήν•˜λŠ” λ ˆμ΄μ–΄λ₯Ό μ˜λ―Έν•œλ‹€.


μΈμŠ€ν„΄μŠ€ 생성 μ–΄λ…Έν…Œμ΄μ…˜

λ ˆμ΄μ–΄λ³„ μΈμŠ€ν„΄μŠ€ 생성 μ–΄λ…Έν…Œμ΄μ…˜ μ„€λͺ…

πŸ“Œμ£Όμš” μ²˜λ¦¬μ‹œ μ‚¬μš© μ–΄λ…Έν…Œμ΄μ…˜
μ–΄λ…Έν…Œμ΄μ…˜κ°œμš”
@Controllerμ• ν”Œλ¦¬μΌ€μ΄μ…˜ λ ˆμ΄μ–΄μ˜ μ»¨νŠΈλ‘€λŸ¬μ— λΆ€μ—¬
@Service도메인 λ ˆμ΄μ–΄μ˜ 업무 μ²˜λ¦¬μ— λΆ€μ—¬
@Repository인프라 λ ˆμ΄μ–΄μ˜ λ°μ΄ν„°λ² μ΄μŠ€ μ•‘μ„ΈμŠ€ μ²˜λ¦¬μ— λΆ€μ—¬
πŸ“Œλ³΄μ‘° μ²˜λ¦¬μ‹œ μ‚¬μš© μ–΄λ…Έν…Œμ΄μ΄μ…˜
μ–΄λ…Έν…Œμ΄μ…˜κ°œμš”
@Component@Controller, @Service, @Repository의 μš©λ„ μ΄μ™Έμ˜ μΈμŠ€ν„΄μŠ€ 생성 λŒ€μƒ ν΄λž˜μŠ€μ— λΆ€μ—¬

@ComponentλŠ” ν•˜μœ„ λ‘œμ§μ„ μ²˜λ¦¬ν•  λ•Œ μ‚¬μš©ν•œλ‹€.

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

  • 직접 μ–΄λ…Έν…Œμ΄μ…˜μ„ λ§Œλ“œλŠ” μ»€μŠ€ν…€ μ–΄λ…Έν…Œμ΄μ…˜μ€ java.lang.AnnotationμΈν„°νŽ˜μ΄μŠ€λ₯Ό μƒμ†ν•˜κ³  λ§Œλ“ λ‹€. λ˜ν•œ, μ»€μŠ€ν…€ μ–΄λ…Έν…Œμ΄μ…˜μ„ μ •μ˜ν•  λ•ŒλŠ” μ „μš© μžλ°” νŒŒμΌμ„ 생성해야 ν•œλ‹€.
  • @interface ν‚€μ›Œλ“œλ₯Ό μ‚¬μš©ν•΄μ„œ λ§Œλ“ λ‹€.

ReferenceπŸ“š

  • μŠ€ν”„λ§ ν”„λ ˆμž„μ›Œν¬ 첫걸음 - ν›„λ£¨λ„€μŠ€ ν‚€λ…Έμ‹œνƒ€ λ§ˆμ‚¬μ•„ν‚€ -
profile
천천히, κΎΈμ€€νžˆ, 그리고 λκΉŒμ§€

0개의 λŒ“κΈ€