잡동사니
2021-06-07 Dependency
조용한고라니
2021. 6. 7. 13:02
반응형
B는 C를 사용하므로 C는 B의 부품
A는 B를 사용하므로 B는 A의 부품
Frame은 A를 사용하므로 Frame의 부품
즉, Dependency는 상대적이다.
왼쪽, 중앙 방법은 부픔(A)를 뺏다 꼇다 할 수 있는 방법이 아니므로 DI가 아니다.
오른쪽은 Setter, Constructor 로 Injection를 하는 방법이다.
스프링이 DI를 해준다. 직접 관리하는 것보다 속도는 느릴 수 있으나 변경이 유연하다
IoC Container
Dependency Injection의 방법
생성자 Injection
@Service
public class NoticeServiceImpl implements NoticeService{
private final NoticeRepository repository;
//생성자
@Autowired
public NoticeServiceImpl(NoticeRepository repository) {
this.repository = repository;
}
...
}
# 장점
다른 초기화 로직이 등장하게 할 수 있다.
도중에 바뀔 염려가 없다.
Setter Injection
@Service
public class NoticeServiceImpl implements NoticeService{
private final NoticeRepository repository;
//Setter
@Autowired
public void setRepository(NoticeRepository repository) {
this.repository = repository;
}
....
}
Field Injection
@Service
public class NoticeServiceImpl implements NoticeService{
//Field
@Autowired
private NoticeRepository repository;
...
}
# 장점
편리하다.
반응형