[java] 애노테이션을 이용한 의존성 주입

의존성 주입

의존성 주입은 객체 간의 결합을 느슨하게 하고 유연성을 높이기 위해 사용되는 디자인 패턴입니다. 이는 객체들이 직접 생성하는 대신 외부로부터 필요한 의존성을 주입받는 방식으로 동작합니다.

의존성 주입을 통해 코드의 유지보수성과 확장성을 높일 수 있으며, 단위 테스트의 용이성을 증가시킵니다.

애노테이션을 이용한 의존성 주입

자바에서는 애노테이션을 이용하여 의존성 주입을 수행하는데, 주로 @Autowired@Qualifier 애노테이션을 활용합니다.

@Autowired 애노테이션은 스프링 프레임워크에서 사용되며, 해당 애노테이션이 지정된 필드나 메소드의 매개변수에 해당하는 타입의 빈을 주입합니다. 빈이 여러 개 존재하는 경우 @Qualifier와 함께 사용하여 주입할 빈을 명시적으로 지정할 수 있습니다.

public class ExampleService {

    @Autowired
    private ExampleRepository exampleRepository;

    // ...
}

위 코드에서 @Autowired 애노테이션을 사용하여 ExampleRepository 타입의 빈을 필드에 주입하고 있습니다.

예제 코드

아래는 스프링 프레임워크를 사용한 의존성 주입 예제 코드입니다.

@Configuration
@ComponentScan("com.example")
public class AppConfig {

    @Bean
    public ExampleRepository exampleRepository() {
        return new ExampleRepositoryImpl();
    }

    @Bean
    public ExampleService exampleService() {
        return new ExampleService();
    }
}

위 코드에서 @Configuration 애노테이션은 설정 클래스를 나타내며, @ComponentScan은 지정된 패키지에서 컴포넌트를 찾도록 지정합니다.

참고 자료