개발/SPRING

[Spring] DI를 쉽게 하는 방법 (Feat. @RequiredArgsConstructor)

지잉지잉 2023. 2. 26. 14:44

1. 개요

  • Spring DI 방법은 대표적으로 아래의 세 가지를 이용한다. 
    • 생성자 주입
    • Field 주입
    • Setter 주입
  • 보통은 @Autowired를 이용한 Field 주입을 많이 사용하는데, 생성자 주입을 권장한다.
    • 순환참조 이슈
    • Bean을 Immutable 하게 주입 가능 등 장점이 많다.

2. 기본적인 생성자 주입 방법

@RestController
@RequestMapping("")
public class TestController {

    private final ProjectService projectService;
    private final CatalogService catalogService;
    private final MailService mailService;
    
    public TestController(ProjectService projectService, CatalogService catalogService, MailService mailService) {
        this.projectService = projectService;
        this.catalogService = catalogService;
        this.mailService = mailService;
    }
}
  • 생성자에 Dependencies를 추가한다.
  • Spring은 해당 Dependency를 찾아와 자동으로 주입해준다.

3. 더 간단하게 생성자 주입

@RestController
@RequestMapping("")
@RequiredArgsConstructor
public class TestController {

    private final ProjectService projectService;
    private final CatalogService catalogService;
    private final MailService mailService;
}
  • @RequiredArgsConstructor
    • final 혹은 @NonNull 이 붙은 필드만 받는 생성자 자동생성
  • @RequiredArgsConstructor로 생성자를 생략할 수 있고, 자동으로 의존성 주입(생성자 주입)까지 된다.