의존성 주입을 사용하면 하드코딩된 의존과 결합도를 줄이며, 코드를 유연하고 테스트 가능한 모듈로 구성할 수 있습니다. 이를 통해 사용자는 프로젝트의 확장성과 유지 보수을 개선할 수 있습니다.
DI 의존성 주입 : 클래스 간에 의존 관계가 있다는 것. ioc를 지키기 위한 디자인 패턴
스프링 의존성 주입 : autowired(필드/setter/생성자)
의존성 주입은 객체 지향 프로그래밍 및 소프트웨어 디자인 패턴 중 하나로서, 객체의 생성과 초기화를 외부에서 제어하는 방식입니다. 이를 이용하면 클래스들간의 결합도(coupling)를 낮추고 코드의 재사용성을 높일 수 있게 됩니다. 스프링 프레임워크에서는 의존 주입을 지원하기 위해 IoC(Inversion of Control, 제어 역전) 컨테이너를 제공합니다. IoC 컨테이너는 개발자로부터 객체 생명 주기를 관리하는 책임을 인수. 결국, 의존성 주입은 클래스 생성 시 외부에서 필요한 종속성을 객체에 주입하고, 객체 생성과 동시에 이를 사용할 수 있도록 하는 과정입니다. 스프링에서는 주로 다음 세 가지 방법으로 의존성 주입을 사용합니다.
생성자를 이용한 주입 : 객체 생성 시점에 필요한 의존성을 전달하는데 사용되는 생성자 주입법입니다.
세터 메소드를 이용한 주입 : 세터 메소드를 이용해 필요한 의존성을 설정하는 방식입니다.
필드를 이용한 주입(Field Injection) 직접 필드에 주입하여 의존성을 설정하는 방식입니다.