Skip to content

Java Annotation 정리

Minjae Lee edited this page Apr 16, 2024 · 9 revisions

Common Java Annotation

Annotation Summary Description (ν•„μš”ν•œ κ²½μš°μ—λ§Œ)
@Component ν•΄λ‹Ή 클래슀λ₯Ό Bean으둜 λ“±λ‘ν•©λ‹ˆλ‹€. @ComponentScan에 μ˜ν•΄ ν•΄λ‹Ή μ–΄λ…Έν…Œμ΄μ…˜μ΄ λΆ™μ–΄μžˆλŠ” 클래슀λ₯Ό μžλ™μœΌλ‘œ μ°Ύμ•„ Spring IoC μ»¨ν…Œμ΄λ„ˆμ— Bean μΈμŠ€ν„΄μŠ€λ₯Ό μƒμ„±ν•΄μ„œ ν•΄λ‹Ή μΈμŠ€ν„΄μŠ€λ₯Ό μ˜μ‘΄κ°€λŠ₯ν•˜λ„λ‘ λ§Œλ“œλŠ” λ…€μ„μž…λ‹ˆλ‹€.
@Configuration ν•΄λ‹Ή ν΄λž˜μŠ€κ°€ Bean ꡬ성 Classμž„μ„ μ•Œλ €μ€λ‹ˆλ‹€. @Bean μ–΄λ…Έν…Œμ΄μ…˜κ³Ό ν•¨κ»˜ μ‚¬μš©ν•©λ‹ˆλ‹€.
@Bean 직접 μ œμ–΄ν•  수 μ—†λŠ” μ™ΈλΆ€ 라이브러리 등을 Bean으둜 λ§Œλ“€κ³ μž ν•  λ•Œ μ‚¬μš©ν•©λ‹ˆλ‹€. λ©”μ„œλ“œ λ ˆλ²¨μ—μ„œ μ‚¬μš©ν•©λ‹ˆλ‹€. μ΄λ•Œ λ©”μ„œλ“œλŠ” 객체 자체λ₯Ό λ°˜ν™˜ν•˜λŠ” κΈ°λŠ₯을 ν•˜κ²Œ 되며, @Configuration으둜 μ„ μ–Έλœ 클래슀 λ‚΄λΆ€μ—μ„œ μ‚¬μš©ν•©λ‹ˆλ‹€.
@Autowired Bean을 μ£Όμž…ν•˜λŠ” μ—­ν• μž…λ‹ˆλ‹€. ν•„λ“œ, setter, μƒμ„±μž 등에 μ˜μ‘΄μ„±μ„ μ£Όμž…ν•  λ•Œ μ‚¬μš©ν•©λ‹ˆλ‹€.

Lombok Annotation

Annotation Summary Description (ν•„μš”ν•œ κ²½μš°μ—λ§Œ)
@NoArgsConstructor κΈ°λ³Έ μƒμ„±μžλ₯Ό μžλ™μœΌλ‘œ μƒμ„±ν•©λ‹ˆλ‹€. (access=) νŒŒλΌλ―Έν„°λ‘œ κΈ°λ³Έ μƒμ„±μžμ˜ μ ‘κ·Ό κΆŒν•œμ„ μ„€μ •ν•  μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€.
@AllArgsConstructor λͺ¨λ“  ν•„λ“œ 값을 λ°›λŠ” μƒμ„±μžλ₯Ό μžλ™μœΌλ‘œ μƒμ„±ν•©λ‹ˆλ‹€.
@RequiredArgsConstructor finalμ΄λ‚˜ @NonNull ν•„λ“œ κ°’λ§Œ νŒŒλΌλ―Έν„°λ‘œ λ°›λŠ” μƒμ„±μžλ₯Ό μžλ™μœΌλ‘œ μƒμ„±ν•©λ‹ˆλ‹€.
@Getter λͺ¨λ“  ν•„λ“œμ˜ Getter λ©”μ„œλ“œλ₯Ό μžλ™μœΌλ‘œ μƒμ„±ν•©λ‹ˆλ‹€.
@Setter λͺ¨λ“  ν•„λ“œμ˜ Setter λ©”μ„œλ“œλ₯Ό μžλ™μœΌλ‘œ μƒμ„±ν•©λ‹ˆλ‹€.
@ToString λͺ¨λ“  ν•„λ“œμ˜ toString λ©”μ„œλ“œλ₯Ό μžλ™μœΌλ‘œ μƒμ„±ν•©λ‹ˆλ‹€.

JPA Annotation

JPAλž€ μžλ°” μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜μ—μ„œ κ΄€κ³„ν˜• λ°μ΄ν„°λ² μ΄μŠ€λ₯Ό μ‚¬μš©ν•˜λŠ” 방식을 μ •μ˜ν•œ μΈν„°νŽ˜μ΄μŠ€λ₯Ό 의미

Annotation Summary Description (ν•„μš”ν•œ κ²½μš°μ—λ§Œ)
@Entity 클래슀λ₯Ό JPA Entity둜 μ„ μ–Έν•©λ‹ˆλ‹€. ν•΄λ‹Ή ν΄λž˜μŠ€λŠ” 이제 JPAκ°€ κ΄€λ¦¬ν•˜κ²Œ 되며, λ°μ΄ν„°λ² μ΄μŠ€ ν…Œμ΄λΈ”κ³Ό ν•΄λ‹Ή κ°μ²΄λŠ” λ§€ν•‘λ©λ‹ˆλ‹€.
@Id μ—”ν‹°ν‹°μ˜ κΈ°λ³Έ ν‚€(primary key)λ₯Ό μ§€μ •ν•©λ‹ˆλ‹€.
@GeneratedValue κΈ°λ³Έ ν‚€μ˜ 생성 κ·œμΉ™μ„ μž‘μ„±ν•©λ‹ˆλ‹€.
@Enumerated Enum νƒ€μž…μ„ 맀핑할 λ•Œ μ‚¬μš©ν•©λ‹ˆλ‹€. Enum의 μˆœμ„œ(ORDINAL) λ˜λŠ” 이름(STRING)을 λ°μ΄ν„°λ² μ΄μŠ€μ— μ €μž₯ν•  ν˜•μ‹μ„ 지정할 수 μžˆμŠ΅λ‹ˆλ‹€.

Controller File Java Annotation

Annotation Summary Description (ν•„μš”ν•œ κ²½μš°μ—λ§Œ)
@Controller
@RestController
@RequestMapping
@RequestBody
@PathVariable

Service File Java Annotation

Annotation Summary Description (ν•„μš”ν•œ κ²½μš°μ—λ§Œ)
@Service
@Builder
@Transactional