Spring DI : 스프링 의존관계 주입

후추·2023년 4월 14일
0

들어가기

스프링을 활용해 의존관계를 주입하는 방법은 크게 3가지이다.

  • 생성자를 통한 주입
  • 필드 주입
  • setter를 통한 주입

각 3가지 방법에 대한 특징을 알아보자.

생성자를 통한 주입

@Service
public class GymService {
    
    private final GymRepository gymRepository;

	//@Autowired
    public GymService(final GymRepository gymRepository) {
        this.gymRepository = gymRepository;
    }
}

생성자를 통해 의존관계를 주입하는 방법이다.

  • 주입 받는 객체 필드에 final 키워드를 붙일 수 있다. 즉 생성자 주입을 활용하면 불변 객체를 만들 수 있다.
  • 생성자가 1개만 있을 경우 @Autowired를 생략할 수 있다.

필드 주입

@Service
public class GymService {

    @Autowired
    private GymRepository gymRepository;

    public GymService() {
    }
}

필드에 직접 의존관계를 주입하는 방법이다.

  • 필드의 의존성을 개발자가 직접 제어할 수 없어 테스트하기 어렵다.
  • 프레임워크에 지나치게 의존적인 방법이다.
  • 필드에 fianl 키워드를 붙일 수 없다.

setter를 통한 주입

@Service
public class GymService {
    
    private GymRepository gymRepository;

    public GymService() {
    }

    @Autowired
    public void setGymRepository(final GymRepository gymRepository) {
        this.gymRepository = gymRepository;
    }
}

setter 메서드와 같은 수정자를 통해 의존관계를 주입하는 방법이다.

  • 주입받는 객체가 변경될 가능성이 있는 경우 사용할 수 있다.

0개의 댓글