Annotation - f-lab-edu/practice-mall GitHub Wiki

! ν”„λ‘œμ νŠΈλ₯Ό μ§„ν–‰ν•˜λ©΄μ„œ ν•™μŠ΅ν•œ 뢀뢄을 기둝해두기

@RequiredArgsConstructor

@RequiredArgsConstructorλŠ” μ΄ˆκΈ°ν™” λ˜μ§€μ•Šμ€ final ν•„λ“œλ‚˜, @NonNull 이 뢙은 ν•„λ“œλ₯Ό νŒŒλΌλ―Έν„°λ‘œ λ°›λŠ” μƒμ„±μžλ₯Ό 생성해 μ€λ‹ˆλ‹€. μƒˆλ‘œμš΄ ν•„λ“œλ₯Ό μΆ”κ°€ν•  λ•Œ λ‹€μ‹œ μƒμ„±μžλ₯Ό λ§Œλ“€μ–΄μ„œ κ΄€λ¦¬ν•΄μ•Όν•˜λŠ” λ²ˆκ±°λ‘œμ›€μ„ μ—†μ• μ€€λ‹€. (@Autowiredλ₯Ό μ‚¬μš©ν•˜μ§€ μ•Šκ³  μ˜μ‘΄μ„± μ£Όμž…)

@RequiredArgsConstructor μ‚¬μš©μ‹œ
@RestController 
@RequiredArgsConstructor
@RequestMapping("/product")
public class ProductController {

private final ProductService productService;
@RequiredArgsConstructor μ‚¬μš©ν•˜μ§€ μ•Šκ³  μƒμ„±μž μ£Όμž…μ½”λ“œ μ‚¬μš©μ‹œ
@RestController 
@RequestMapping("/product")
public class ProductController {

private final ProductService productService;
@Autowired 
public ProductController(ProductService productService){
     this.productService = productService; 
}

@AllArgsConstructor / @NoArgsConstructor

두 μ–΄λ…Έν…Œμ΄μ…˜μ€ μƒμ„±μžλ₯Ό μžλ™ μƒμ„±ν•΄μ£ΌλŠ” μ–΄λ…Έν…Œμ΄μ…˜μœΌλ‘œ

  • @NoArgsConstructor : νŒŒλΌλ―Έν„°κ°€ μ—†λŠ” λ””ν΄λ“œ μƒμ„±μžλ₯Ό 생성

    • ν΄λž˜μŠ€μ— λͺ…μ‹œμ μœΌλ‘œ μ„ μ–Έλœ μƒμ„±μžκ°€ 없어도 μΈμŠ€ν„΄μŠ€λ₯Ό 생성할 수 있음
  • @AllArgsConstructor : λͺ¨λ“  ν•„λ“œ 값을 νŒŒλΌλ―Έν„°λ‘œ λ°›λŠ” μƒμ„±μž 생성

    • 클래슀의 λͺ¨λ“  ν•„λ“œλ₯Ό ν•œ λ²ˆμ— μ΄ˆκΈ°ν™” ν•  수 있음

(μœ„μ˜ @RequiredArgsConstructor도 μžλ™μœΌλ‘œ μƒμ„±μžλ₯Ό λ§Œλ“€μ–΄μ£ΌλŠ” μ–΄λ…Έν…Œμ΄μ…˜ 쀑 ν•˜λ‚˜)


@Controller κ°€ μ•„λ‹Œ @RestController μ‚¬μš©μ΄μœ 

@WebMvcTest