티스토리 뷰

Java/Spring

<Spring> 의존 관계 주입 방법

면목동인간 2024. 8. 27. 19:50

의존 관계 주입 방법

  • 생성자 주입
  • 수정자 주입(setter 주입)
  • 필드 주입
  • 일반 메서드 주입

 

생성자 주입

 생성자를 통해서 의존 관계를 주입하는 것이다. 객체의 생성과 동시에 주입하며 불변, 필수 의존관계에 사용한다.

@Service
public class ExService {

    private final ExRepository exRepository;
    
    // 생성자가 1개일 때 @Autowired 생략 가능
    // @Autowired
    public exService(ExRepository exRepository) {
        this.exRepository = exRepository;
    }
}

※ 생성자가 1개만 있으면 @Autowired 생략 가능하다.

 

수정자 주입

 setter라 불리는 수정자 메서를 통해서 의존 관계를 주입하는 것이다. 선택과, 변경 가능성이 있는 의존 관계에 사용한다.

@Service
public class ExService {

    private ExRepository exRepository;

    @Autowired
    public void setExRepository(ExRepository exRepository) {
        this.exRepository = exRepository;
    }

}

 

필드 주입

 필드에 주입하는 방법이다. 코드가 단순하지만 테스트하기 어려운 단점이 있다. 과거에는 많이 사용했지만 최근에는 사용하지 않는다.

@Service
public class ExService {

    @Autowired
    private ExRepository exRepository;

}

※ 테스트를 하기 어려운 이유는 스프링 없이 순수한 자바 테스트 환경애서 실행할 때 동작하지 않기 때문이다.

 

일반 메서드 주입

 일반 메서드 통해서 주입 받을 수 있다. 잘 사용하지 않는다.

@Service
public class ExService {

    private ExRepository exRepository;

    @Autowired
    public void init(ExRepository exRepository) {
        this.exRepository = exRepository;
    }

}

 

정리

 의존 관계 주입은 거의 대부분 생성자 방식을 통해 주입하며, 간혹 변경 가능성이 있을 경우 setter 방식을 통해 주입하면 된다. 그리고 @Autowired을 사용하기 위해서는 해당 객체가 스프링 컨테이너가 관리하는(@Service로 지정한 객체) 스프링 빈이어야 한다.

 

 


본 포스팅은 “스프링 핵심 원리 - 기본편/인프런”를 학습한 내용을 정리한 것

댓글
최근에 올라온 글
«   2026/03   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함
Total
Today
Yesterday