Spring 의존성 주입(Spring DI, Spring Dependency Injection)

  • 객체가 필요한 걸 직접 만들지 않고, 스프링이 대신 만들어서 넣어주는 것
  • Spring이 @Component, @Service, @Repository, @Configuration 이런 애노테이션들을 보고, 자동으로 객체를 만들어서 주입함
  • 스프링 방식: 필요한 걸 외부에서 “넣어준다(DI)”
public class MyService {
    private final MyRepository repo;

    public MyService(MyRepository repo) { // 외부에서 넣어준다!
        this.repo = repo;
    }
}
  • 전통적인 방식: 내가 필요한 걸 직접 new 해서 만든다
    • 테스트하기 어려움
    • 재사용성이 떨어짐
public class MyService {
    private final MyRepository repo = new MyRepository(); // 직접 만든다
}

정리

개념 설명
DI란? 내가 직접 만들지 않고, Spring이 알아서 만들어서 “넣어주는 것”
왜 써? 코드가 깔끔하고, 테스트도 쉽고, 변경도 쉬움
무엇을? Repository, Service, 설정값 등
어떻게? 생성자나 @Autowired로 주입 받음
Spring은 어떻게 알아? @Component, @Service, @Bean 같은 애노테이션 덕분에 알아서 객체를 만들고 주입

참고

  • ChatGPT-4.0

보완/복습

  • 2025.07.15 생성

태그:

카테고리:

업데이트: