minstory
Spring Boot에서 @Qualifier 어노테이션의 활용 본문
목차:
- 소개
1.1 스프링에서 빈 주입과@Qualifier
어노테이션
1.2@Qualifier
의 역할과 필요성 @Qualifier
어노테이션의 활용
2.1 기본적인@Qualifier
사용법
2.2 여러 개의 빈 후보 중 명시적인 선택
2.3 빈 이름 규칙과@Qualifier
의 연결- 실제 예제: MessageMapper 인터페이스를 구현하는 여러 클래스
3.1 MessageMapper 인터페이스 정의
3.2 여러 구현체 클래스 생성
3.3@Qualifier
를 사용한 명시적인 빈 선택 - 코드 예시 및 설명
4.1 MessageService 클래스에서의@Qualifier
사용 - 결론
1. 소개
1.1 스프링에서 빈 주입과 @Qualifier 어노테이션
스프링 프레임워크에서는 의존성 주입(Dependency Injection)을 통해 빈을 주입하는데, 이때 여러 후보 빈이 있을 때 명시적으로 어떤 빈을 주입할지 선택하는 데에 @Qualifier
어노테이션을 활용합니다.
1.2 @Qualifier의 역할과 필요성
@Qualifier
어노테이션은 빈을 식별하는 데에 사용되며, 여러 후보 빈 중에서 특정 빈을 선택할 때 필요합니다. 이를 통해 스프링은 어떤 빈을 주입해야 하는지 명시적으로 알 수 있습니다.
2. @Qualifier 어노테이션의 활용
2.1 기본적인 @Qualifier 사용법
@Qualifier
어노테이션은 주입할 빈을 명시적으로 지정하는 데 사용됩니다. 기본적으로 빈의 이름을 사용하여 어떤 빈을 주입할지 결정합니다.
2.2 여러 개의 빈 후보 중 명시적인 선택
여러 개의 동일한 타입을 가진 빈 중에서 특정한 빈을 선택하려면 @Qualifier
를 사용하여 해당 빈의 이름을 명시적으로 지정해야 합니다.
2.3 빈 이름 규칙과 @Qualifier의 연결
스프링은 빈 이름을 생성할 때 클래스 이름을 기반으로 하며, 따라서 @Qualifier
에서 사용하는 문자열은 빈 이름 규칙에 따라 소문자로 시작해야 합니다.
3. 실제 예제: MessageMapper 인터페이스를 구현하는 여러 클래스
코드 예시를 통해 @Qualifier
를 사용하여 여러 MessageMapper
구현체 중에서 명시적으로 특정 구현체를 선택하는 방법을 살펴봅니다.
3.1 MessageMapper 인터페이스 정의
import org.apache.ibatis.annotations.Mapper
import org.springframework.stereotype.Repository
@Repository
@Mapper
interface MessageMapper {
fun createMessage()
fun createMessageItem()
fun createMessageItemFile()
}
3.2 여러 구현체 클래스 생성
@Repository
@Mapper
class MessageMapperImpl1 : MessageMapper {
// 구현 내용
}
@Repository
@Mapper
class MessageMapperImpl2 : MessageMapper {
// 구현 내용
}
3.3 @Qualifier를 사용한 명시적인 빈 선택
@Service
class MessageService(@Qualifier("messageMapperImpl1") private val messageMapper: MessageMapper) {
@Transactional
fun createMessage(): Long {
return this.messageMapper.createMessage()
}
}
4. 코드 예시 및 설명
여러 개의 MessageMapper
구현체가 있을 때, @Qualifier
를 사용하여 특정한 빈을 주입하는 방법을 코드 예시를 통해 설명합니다.
4.1 MessageService 클래스에서의 @Qualifier 사용
@Service
class MessageService(@Qualifier("messageMapperImpl1") private val messageMapper: MessageMapper) {
@Transactional
fun createMessage(): Long {
return this.messageMapper.createMessage()
}
}
5. 결론
- @Qualifier 어노테이션은 여러 후보 빈 중에서 명시적으로 선택하기 위한 강력한 도구입니다. 적절한 사용 시나리오를 파악하고 활용하는 것이 중요합니다.
- 프로젝트가 확장될 가능성이 있는 경우, @Qualifier를 사용하여 빈을 명시적으로 선택함으로써 코드의 가독성을 높이고, 유지보수성과 확장성을 향상시킬 수 있습니다.
'Spring' 카테고리의 다른 글
SpringBoot - Kotlin에서 validation(@Valid)이 동작하지 않을 때 (0) | 2023.12.27 |
---|
Comments