[ShowMyCNFT] 의존성 주입(Dependency Injection)

junghan·2023년 4월 7일
0

SpringBootProject

목록 보기
22/35
post-thumbnail

의존성 주입이란?

의존성 주입(Dependency Injection)은 객체 간의 의존 관계를 컨테이너가 자동으로 관리하도록 하는 디자인 패턴입니다.
객체가 사용하는 다른 객체를 직접 생성하거나 관리하는 것이 아니라, 컨테이너에서 필요한 객체를 생성하고 관리하며, 필요한 경우 객체 간의 의존 관계를 자동으로 설정합니다.
이를 통해 객체 간의 결합도를 낮추고, 유연하고 확장 가능한 구조를 유지할 수 있습니다.


의존성을 주입하는 3가지 방법

  1. 생성자 주입(Constructor Injection): 객체 생성 시에 생성자를 통해 의존 객체를 주입받습니다.
public class UserService {
    private UserRepository userRepository;

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

  1. Setter 주입(Setter Injection): Setter 메서드를 통해 의존 객체를 주입받습니다.
public class UserService {
    private UserRepository userRepository;

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

  1. 필드 주입(Field Injection): 필드에 직접 의존 객체를 주입합니다.
public class UserService {
    @Autowired
    private UserRepository userRepository;
}

스프링 프레임워크에서는 대부분의 의존성 주입을 Setter 주입이나 필드 주입으로 구현합니다. 스프링은 자동으로 객체 간의 의존 관계를 파악하고, 필요한 객체를 주입해줍니다.

의존성 주입을 사용하면, 객체 간의 결합도를 낮추고 유지보수성을 향상시킬 수 있습니다. 객체가 사용하는 다른 객체를 직접 생성하거나 관리하지 않기 때문에, 객체의 변경이나 교체가 발생해도 다른 객체에 영향을 주지 않습니다. 또한, 객체를 테스트하기 위해서는 의존 객체를 가짜 객체(Mock Object)로 대체하여 테스트할 수 있습니다. 이를 통해 객체의 독립성을 높이고, 테스트 용이성을 높일 수 있습니다.

profile
42seoul, blockchain, web 3.0

0개의 댓글