IntelliJ

[Spring] DI (Dependency Injection)가 필요한 이유

HU_717 2024. 11. 15. 20:00

Dependency Injection

  • Spring 프레임워크는 3가지 핵심 프로그래밍 모델을 지원하고 있으며, 그 중 하나가 의존성 주입(Dependency Injection,DI)이다
  • 의존성 주입은 하나의 객체에 다른 객체의 의존성을 제공하는 기술이며 객체 지향의 다섯가지 원칙(SOLID)중 의존관계 역전 원칙(Dependency inversion principle)을 따른다 

DI가 필요한 이유

  • 객체 지향 프로그래밍에서 클래스간 의존성이 있다는 것은 클래스간 의존 관계가 있다는 것을 말함
  • 즉, 클래스간 의존(Dependency)관계가 있으므로 한 클래스가 바뀔 때 다른 클래스가 영향을 받음
  • 이를 방지하기 위해 인터페이스를 사용하여 클래스간 의존성을 없애 유연하게 함
  • 의존성 주입을 받는다면, 클래스간 결합도가 약해지고 한 클래스가 변경될 경우, 다른 클래스가 변경될 필요성이 적어짐

DI의 특징

  • 코드의 재활용성을 높일 수 있으므로 유지보수가 용이해짐
  • 클래스 간 결합도를 낮출 수 있음
  • 인터페이스 기반으로 설계되며, 코드를 유연하게 함
  • 단위테스트에 용이함
  • UI가 있는 프로그램에서, 생명주기 별로 Container을 관리하여 리소스를 막을 수 있음 

의존성 주입 방법

  1. XMl 기반 의존성 주입
    • XMl 설정 파일에는 <bean> 태그를 사용하여 스프링 IoC컨테이너가 관리할 빈을 정의함
    • 각 <bean> 태그는 특정 클래스를 정의하고 해당, 클래스의 의존성을 설정할 수 있음
  2. JavaConfig 기반 설정
    • 자바 클래스를 사용하여 스프링 빈과 의존성을 설정하는 방식
    • 클래스에 @Configuration 어노테이션을 사용하고, 빈으로 등록할 메서드에 @Bean 어노테이션 사용

스프링에서 DI를 지원하는 이유에 대해 알아보았다

전반적인 개념은 이해를 했지만 코드가 늘어남에 따른 흐름에 대해서는 더 많은 공부가 필요할 듯하다

'IntelliJ' 카테고리의 다른 글

[ 의존성 ] 추가 라이브러리 선택  (0) 2024.11.19
[Error] logging ERR  (0) 2024.11.18
[IntelliJ] Spring Boot 프로젝트 생성하기  (0) 2024.11.14
[JSP] Encoding ERROR  (0) 2024.11.14
[IntelliJ] Lombok 설정  (0) 2024.11.12