의존성 주입(Dependency Injection, Di)

J-Cheol·2023년 11월 17일
0

Java

목록 보기
3/4
post-thumbnail

의존성 주입(Dependency Injection, DI)


  • 소프트웨어 디자인 패턴 중 하나로, 객체 간의 의존성을 외부에서 관리하고 주입하는 기법입니다.
    주로 객체 지향 프로그래미엥서 사용되며, 코드의 유연성과 테스트 용이성을 증가시키는 데 도움을 줍니다.
  • 테스트에서 모의 객체(Mock Objects)를 쉽게 주입하여 테스트할 수 있는 장점이 있습니다.
  • 스프링 프레임워크와 같은 프레임워크에서는 의존성 주입을 통해 객체의 라이프사이클을 관리하고, 애플리케이션의 모듈성과 유지보수성을 향상시킵니다.

1. 생성자 주입(Constructor Injection)

  • 객체를 생성할 때 해당 객체가 필요로 하는 의존성을 생성자를 통해 주입하는 방식입니다.
  • 객체가 생성되는 시점에 의존성이 명시적으로 주입되므로, 객체가 유효한 상태로 생성되고 의존성을 갖게 됩니다.
    public class Constructor
    {
    	private Sample sample;	
    
    // 생성자 주입
    	public Constructor(Sample sample)
    	{
    		this.sample = sample;
    	}
    }

2. Setter 주입(Setter Injection)

  • 객체의 setter 메서드를 통해 의존성을 주입하는 방식입니다.
  • 생성자가 아닌 setter 메서드를 이용하기 때문에 필요에 따라 의존성을 변경할 수 있습니다.
  • 의존성을 변경할 수 있다는 것은, 해당 객체의 인스턴스가 생성된 이후에도 의존성을 동적으로 변경할 수 있따는 의미입니다. Setter 메서드를 통해 외부에서 새로운 의존성을 주입할 수 있습니다.
    public class Setter
    {
    	private Sample sample;
    	
    	 // Setter 주입
    	 public void setSample(Sample sample)
    	 {
    		 this.sample = sample;
    	 }
    }

3. 메서드 주입(Method Injection)

  • 일반 메서드의 매개변수를 통해 의존성을 주입하는 방식입니다.
  • 메서드가 호출될 때 의존성이 주입되기 때문에, 해당 메서드에서만 필요한 의존성을 주입할 수 있습니다.
    public class Printer
    {
    	// 메서드 주입
    	public void printDocument(Document document, InkCartridge ink)
    	{
    		// 인쇄 로직
    	}
    }
profile
신입 백엔드 개발자(JAVA, Spring Boot, MYSQL)

0개의 댓글