Spring DI

uuuouuo·2022년 9월 20일
0

SPRING

목록 보기
3/8

Spring DI


  • IoCDI는 다른 개념
    • DI 없이도 IoC를 만족하는 프로그램을 만들기 가능
    • IoC는 프로그램 제어권을 역전시키는 개념
    • DI는 해당 개념을 구현하기 위해 사용하는 디자인 패턴 중 하나
  • DI(Dependency Injection)의존성 주입이란 뜻
  • 스프링에서 말하는 의존성 주입이란, 스프링 컨테이너가 객체 간 의존 관계를 개발자가 정의한 Bean 등록 정보를 바탕으로 자동으로 주입해주는 것
    • 일반적인 스프링 프로젝트를 보면 Controller에서 ServiceRepository 객체를 사용 시, new 키워드를 통해 컨트롤러에서 객체를 직접 생성하여 사용하지 않고 의존성 주입을 통해 스프링 컨테이너에 생성된 객체를 받아 사용하고 있는 것을 볼 수 있음
    • 어노테이션이 붙은 클래스들은 스프링 실행 시 스캔을 통해 개발자가 정의한 의존성 정보를 자동으로 bean 설정 정보에 등록을 하게 되어 의존성 주입이 동작함

이를 통해 객체간 결합도를 낮추고, 코드의 양을 줄여주고, 테스트를 용이하게 하여, 개발 및 유지보수를 더 쉽게 하게 하는 장점을 가짐



DI 종류

필드 주입 (Field Injection)

@Controller
public class Controller {

    @Autowired
    Service service;
    
}

수정자 주입 (Setter Injection)

@Controller
public class Controller {

    private Service service;

    @Autowired
    public void setService(Service service) {
        this.service = service;
    }
    
}

생성자 주입 (Constructor Injection)

  • 현재 스프링 프레임위크에서 가장 권장되는 방식
@Controller
public class Controller {

    private final Service service;

    @Autowired // 생성자가 1개만 있을 경우 생략 가능
    public Controller(Service service) {
        this.service = service;
    }
    
}

0개의 댓글