의존성 주입 Dependency Injection
스프링 컨테이너에서 객체 Bean을 먼저 생성해두고 생성한 객체를 지정한 객체에 주입하는 방식
의존성 주입 방식
1) 필드 주입 Field Injection
클래스에 선언된 필드에 생성된 객체 주입
@Autowired 어노테이션 사용
@Autowired
private PetService petService;
2) 수정자 주입 Setter Based Injection
수정자를 통해 의존성 주입
private PetService petService;
@Autowired
public void setPetService(PetService petService){
this.petService = petService;
}
3) 생성자 주입 Constructor Based Injection
생성자를 통해 의존성 주입 (final 사용 가능, 1회 호출 보장)
private final PetService petService;
@Autowired
public PetController(PetService petService){
this.petService = petService;
}
이때 Lombok 라이브러리를 통해 간결하게 작성할 수 있다
@RequiredArgsConstructor
public class PetController{
private final PetService petService;
}
Autowired 키워드 생략, 필드를 포함한 생성자 자동 생성
생성자 주입의 장점