Dependency : 의존
Injection : 주입
DI는 의존성 주입이란 외부에서 객체를 생성하여 직접 넣어주는 걸 말합니다. Spring을 하다보면 값을 넣지도 않고 객체를 볼 수 있는데요.
@Service
@Transactional(readOnly = true)
@RequiredArgsConstructor
public class MemberService {
//이렇게 쓰거나
private final MemberRepository memberRepository;
(...)
}
@Repository
@RequiredArgsConstructor
public class MemberRepository {
//이런식
private final EntityManager em;
}
Spring에서 알아서 생성해서 넣어주기에 따로 직접 생성하지 않고 사용 할 수 있습니다. 원래 @PersistenceContext나 @Autowire와 같은 어노테이션을 사용하면서 주입해주는데 최신 Spring에서는 생성자로 생략이 가능하기에 저런식으로 짧게 사용이 가능해졌습니다.
결론으로 DI는 직접 객체를 new MemberRepository() 이런식으로 생성하지 않고 외부에서 따로 만들어서 주입시켜주는 것을 말하는 것입니다.