자바 자동 의존관계 주입

남형진·2021년 6월 19일
0

스프링 컨테이너의 자바빈을 이용해서 서버를 작성할 때, 자동 의존관계 주입을 하는 방법에 대해 기록해보겠다.

자바빈의 라이프사이클은 아래와 같다.
1. 객체 생성
2. 의존관계 주입

그렇다면 당연히 객체에 "해당 객체는 빈으로 등록해주세요" 같은 "표시"가 필요하다.

그 표시 방법은 @Component Annotation 이다.
상위에 @ComponentScan이 @Component Annotation이 있는 객체들을 빈으로 등록한다.

그렇다면 의존관계 주입을 어떻게 자동으로 해주는걸까?
(여기서는 생성자 주입방법만 다루겠다)

// 여기 어떤 객체의 contructor가 있다.
public ReservationServiceImpl(ReservationRespository reservationRespository) {
    this.reservationRespository = reservationRespository;
}

생성자를 통해 생성할 때 argument를 자동으로 주입해준다. (타입과 변수명을 기반으로)
그렇다면 스프링이 어떤 생성자를 대상으로 선택할지 알려줘야한다.
때문에 @Autowired annotation을 사용한다.

하지만 만약 생성자가 하나만 존재할 경우 생략해도 된다.

// lombok을 이용한 생성자 코드 생략 방법
@Component
@RequiredArgsConstructor
public class ReservationServiceImpl implements ReservationService{
    private final ReservationRespository reservationRespository;
    ...

위와 같이 롬복 라이브러리를 이용해 코드를 더 간결하게 쓸 수도 있다.

profile
세상을 바꾸는 한줄의 코드를 작성하는 개발자

0개의 댓글