티스토리 뷰
의존 관계 주입 방법
- 생성자 주입
- 수정자 주입(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로 지정한 객체) 스프링 빈이어야 한다.
본 포스팅은 “스프링 핵심 원리 - 기본편/인프런”를 학습한 내용을 정리한 것
'Java > Spring' 카테고리의 다른 글
| <Spring> 컨트롤러 객체 없이 뷰에 요청 전달하기 (0) | 2024.12.03 |
|---|---|
| <Spring> 프로토타입 빈과 싱글톤 빈을 함께 사용시 문제점 (0) | 2024.09.02 |
| <Spring> 스프링 초기화 시점에서의 트랜잭션 적용 (0) | 2024.08.09 |
| <Spring> 트랜잭션 프록시 내부 호출시 문제점 (0) | 2024.07.29 |
| <Spring> @SessionAttribute 이란? (0) | 2024.07.25 |
댓글
