Spring 기초 정리 - 의존성 주입(DI)

Zyoon·2025년 5월 26일

Spring 기초정리

목록 보기
10/18
post-thumbnail

📘스프링의 특징 중 하나인 ‘의존성 주입’에 대해 알아보기


의존성 주입이란? (Dependency Injection, DI)

  • 내가 필요한 물건을 직접 만들지 않고, 누군가가 나 대신 만들어서 주는 것

상황 예시

📝나는 공부를 해야하는데, 펜이 없는 상황.

  • 직접 펜을 사러가지 않고 누군가가 펜을 내 손에 쥐어준다.
  • 나는 이제 펜을 구하는 일에는 신경쓰지 않고 공부만 하면 된다.

📝스프링에서 내가 어떤 기능을 하는 객체를 사용하고 싶다.

  • 내가 직접 만들지 않고 (펜을 사러 가지 않고),
  • 스프링에서 자동으로 그 객체를 만들어서 내가 필요한 곳에 넣어준다. (누군가 펜을 손에 쥐어준다.)

의존성 주입의 장점

  • 코드가 훨씬 깔끔해진다.
  • 객체간의 결합도가 낮아져서 유지보수가 편해진다.
  • 테스트 할 때, 모킹(가짜 객체)을 쉽게 넣을 수 있다.

의존성 주입의 방법

  • 사용해야 하는 객체
@Component
public class Pen {
    public void write() {
        System.out.println("문제를 푼다.");
    }
}
  • 생성자 주입 - 스프링에서 공식적으로 권장하는 사양
@Component
class Student {

    private final Pen pen;

    @Autowired //생성자가 1개인 경우 생략 가능
    public Student(Pen pen) {
        this.pen = pen;
    }
}
  • Lombok 사용 - Lombok 에서 자동으로 생성자 생성
@Component
@RequiredArgsConstructor
class Student {

    private final Pen pen;
}
  • setter 방식
@Component
class Student {

    private final Pen pen;

    @Autowired //생성자가 1개인 경우 생략 가능
    public void setPen(Pen pen) {
        this.pen = pen;
    }
}
  • 필드 주입 (테스트 코드에서만 사용)
@Component
class Student {
		@Autowired
    private final Pen pen;
}
profile
기어 올라가는 백엔드 개발

0개의 댓글