대체 의존성 주입이 뭘까?

YJS·2023년 9월 8일
0

Spring Boot 탐구

목록 보기
4/11

😖문제 상황

스프링의 의존성 주입은 말로만 들어봤지 정확히 어떤 의미인지 아직도 헷갈리는 개념이라 오늘 한번 정리해보기로 했다.

🤓문제 해결 과정

스프링(Spring)에서 의존성 주입(Dependency Injection, DI)은 객체 지향 프로그래밍에서 중요한 원칙 중 하나인 "의존성 역전 원칙(Dependency Inversion Principle, DIP)"을 구현하는 방법 중 하나입니다. 의존성 주입은 객체가 직접 필요로 하는 의존 객체를 생성하거나 참조하지 않고 외부에서 주입받는 방식을 의미합니다.

특징 1)의존 객체를 직접 생성하지 않음:
객체가 필요로 하는 다른 객체(의존성)를 직접 생성하거나 관리하지 않습니다. 대신 이러한 의존 객체를 외부에서 주입 받습니다.

특징 2)외부에서 주입:
객체를 생성하거나 관리하는 주체(스프링 컨테이너)가 객체 간의 의존성을 관리하고 필요한 의존 객체를 객체 생성 시 주입합니다.

스프링에서 의존성 주입은 주로 다음과 같은 방식으로 이루어진다:

step1. 생성자 주입(Constructor Injection): 가장 일반적인 방법으로, 의존 객체를 클래스의 생성자를 통해 주입.

@Service
public class UserService {
    private final UserRepository userRepository;

    @Autowired
    public UserService(UserRepository userRepository) {
        this.userRepository = userRepository;
    }

    // ...
}

step2. Setter 주입(Setter Injection): Setter 메서드를 통해 의존 객체를 주입받는 방법.

@Service
public class UserService {
    private UserRepository userRepository;

    @Autowired
    public void setUserRepository(UserRepository userRepository) {
        this.userRepository = userRepository;
    }

    // ...
}

step3. 필드 주입(Field Injection): 필드 레벨에서 의존 객체를 주입받는 방법.

이 방법은 주로 단순한 의존성 주입에 사용되며, 일부에서는 권장하지 않을 수 있음.

@Service
public class UserService {
    @Autowired
    private UserRepository userRepository;

    // ...
}
profile
우당탕탕 개발 일기

0개의 댓글