Autowired
는 그 이름처럼 상횡에 맞게 IoC 컨테이너 안에 존재하는 Bean을 자동으로 주입해준다.
보통은 다음과 같이 사용한다.
@Service
public class FoodService {
@Autowired
private FoodDelivery foodDelivery;
}
하지만 요즘의 경향을 보면 스프링팀에서 Autowired
의 사용을 권고하지 않는다.
아래와 같이 직접 생성자를 주입하여 사용하거나
@Service
public class FoodService {
private FoodDelivery foodDelivery;
public FoodService(FoodDelivery foodDelivery) {
this.foodDelivery = foodDelivery;
}
}
lombok에서 제공하는 @RequiredArgsConstructor
를 사용하면 된다.
lombok을 프로젝트에 추가해주어야하며 변수를 final
로 선언해야한다.
import lombok.RequiredArgsConstructor;
@Service
@RequiredArgsConstructor
public class FoodService {
private final FoodDelivery foodDelivery;
}
생성자 주입을 사용하는 경우 아래와 같은 장점이 있다.
① 객체의 변이를 방지한다(상수 final 사용).
② 순환 참조를 방지할 수 있다.
③ 테스트 코드를 작성할 때 용이하다.
④ 코드 악취를 제거할 수 있다.
참고자료
'Study > Spring & Spring Boot' 카테고리의 다른 글
[Spring Boot] 게시판 기능 구현하기(3) (0) | 2022.02.24 |
---|---|
[Spring Boot] 게시판 기능 구현하기(2) (0) | 2022.02.24 |
[Spring Boot] 게시판 기능 구현하기(1) (0) | 2022.02.23 |
[Spring Boot] AJAX를 사용한 비동기 통신 (0) | 2022.02.22 |
[Spring Boot] DTO, DAO, Service, Controller (0) | 2022.02.21 |