Java/Spring

라이브러리 임포트 vs. 스프링 DI(의존성 주입)

상상모음 2025. 3. 29. 17:03

어느 정도 비슷한 개념, 하지만 스프링의 DI(의존성 주입)는 단순한 라이브러리 임포트보다 더 강력한 개념.


 라이브러리 임포트 vs. 스프링 DI(의존성 주입)

구분 라이브러리 임포트 스프링 DI(의존성 주입)
의미 외부 라이브러리(.jar, .dll 등)를 프로젝트에 추가하는 것 스프링 컨테이너가 객체(빈)를 자동으로 생성하고 관리하는 것
사용 방식 import 문을 사용하여 직접 코드에서 가져옴 @Autowired, @Bean, @Component 또는 XML 설정을 통해 객체를 주입
객체 생성 new 키워드를 사용하여 직접 인스턴스 생성 스프링 컨테이너가 객체를 생성하고 관리
유지보수 직접 객체를 관리해야 하므로 유지보수가 어려움 객체의 생성과 소멸을 스프링이 담당하므로 유지보수 편리
예제 코드 import java.util.ArrayList;ArrayList<String> list = new ArrayList<>(); @Autowired private BoardService boardService; (스프링이 자동으로 주입)

 왜 DI가 더 강력한가?

라이브러리를 임포트하면 직접 객체를 생성하고 관리해야 하기 때문에 결합도가 높아짐.

반면, 스프링 DI는 객체를 스프링 컨테이너가 관리하므로 코드 변경 없이도 설정만 바꿔서 확장 가능.
즉, 유지보수성과 확장성이 뛰어남.

 예제: 직접 객체 생성 vs. 스프링 DI

직접 객체 생성 (new 사용)

public class BoardController {
    private BoardService boardService = new BoardService();
}
  • BoardController가 BoardService에 직접 의존하므로,
    BoardService를 바꾸려면 코드도 수정해야 함 X

 스프링 DI 적용

public class BoardController {
    @Autowired
    private BoardService boardService;
}
  • 스프링이 자동으로 BoardService 객체를 주입해 줌 (유지보수 편리) 

 결론: 라이브러리 임포트와 DI의 차이

 라이브러리 임포트는 단순히 기능을 가져오는 것이고,
 스프링 DI는 객체의 생성과 관계를 스프링이 자동으로 관리하는 것!

즉, 라이브러리 임포트는 정적인 개념,
반면 스프링 DI는 동적으로 객체를 관리하는 강력한 개념