게으른 개발자의 끄적거림

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

끄적잉 2023. 6. 26. 21:59
반응형

 의존성 주입(Dependency Injection, DI)은 객체 지향 프로그래밍에서 사용되는 설계 원칙 중 하나로, 객체 간의 의존 관계를 느슨하게 만들어주는 방법입니다. JavaSpring 프레임워크는 DI를 지원하며, 객체 간의 의존성을 주입하는 기능을 제공합니다.

DI는 클래스 사이의 결합도를 낮추고 유연성과 재사용성을 향상시킵니다. 의존성 주입은 세 가지 주요 형태로 사용될 수 있습니다:

 

 

 

1. 생성자 주입(Constructor Injection): 객체를 생성할 때 의존성을 주입하는 방식입니다. 클래스의 생성자를 통해 의존하는 객체를 주입받아 필드에 할당합니다. JavaSpring에서는 @Autowired 어노테이션을 사용하여 생성자 주입을 지원합니다.

 

@Service
public class MyService {
    private Dependency dependency;

    @Autowired
    public MyService(Dependency dependency) {
        this.dependency = dependency;
    }

    // ...
}

 

 

 

 

2. 세터 주입(Setter Injection): 의존성을 설정하는 메서드를 통해 주입하는 방식입니다. 필요한 의존성을 설정하는 메서드에 @Autowired 어노테이션을 추가합니다.

 

@Service
public class MyService {
    private Dependency dependency;

    @Autowired
    public void setDependency(Dependency dependency) {
        this.dependency = dependency;
    }

    // ...
}

 

 3. 필드 주입(Field Injection): 필드에 직접 의존성을 주입하는 방식입니다. 필드에 @Autowired 어노테이션을 사용하여 의존성을 주입합니다. 이 방식은 일반적으로 권장되지 않지만, 편의를 위해 사용될 수 있습니다.

 

@Service
public class MyService {
    @Autowired
    private Dependency dependency;

    // ...
}

 

 

의존성 주입은 JavaSpring의 컨테이너(ApplicationContext)가 관리하는 빈(Bean)을 사용할 때 주로 사용됩니다. 컨테이너는 객체의 생명주기를 관리하고 필요한 의존성을 자동으로 주입합니다. 빈은 @Component, @Service, @Repository 등의 어노테이션으로 표시된 클래스입니다.

 

 JavaSpring은 빈을 자동으로 검색하고 생성하여 컨테이너에 등록합니다. 의존성 주입을 사용하면 컨테이너는 필요한 의존성을 찾아 주입하여 객체를 생성하고 연결합니다.

의존성 주입은 테스트 용이성과 모듈성을 향상시키며, 객체 간의 결합도를 낮춰 수정이 용이한 코드를 작성할 수 있도록 도와줍니다.

반응형