데브허브 | DEVHUB | Dynamic Bean Switching in Spring Boot ! No If-Else Hell 🔥 @JavatechieDynamic Bean Switching in Spring Boot ! No If-Else Hell 🔥 @Javatechie
- Spring Boot에서 여러 서비스 구현체 간 전환 시 발생하는
if-else 또는 switch-case 블록의 복잡성 문제를 해결합니다. 🤯
- 맵 기반 주입(Map-based Injection)을 통해 동적으로 빈을 전환하는 효율적인 방법을 제시합니다. 💡
Map<String, 인터페이스> 형태로 빈을 주입하면, Spring이 해당 인터페이스의 모든 구현체를 자동으로 스캔하여 맵을 구성합니다. 🗺️
@Service("원하는_빈_이름") 어노테이션을 사용하여 맵의 키(빈 이름)를 사용자 입력값과 일치하도록 간단하게 정의할 수 있습니다. 🏷️
- 컨트롤러에서는 입력받은 값(예: 결제 유형)을 맵의 키로 사용하여 해당 서비스 구현체를 동적으로 가져와 실행함으로써 조건문 없이 유연한 처리가 가능합니다. 🚀
- 이 방식은
if-else 조건문을 제거하고, 새로운 구현체 추가 시 컨트롤러 코드 수정이 필요 없어 확장성과 유지보수성을 크게 향상시킵니다. ✨
- 팩토리 패턴과 유사한 상황에서 강력히 권장되며, 실시간 프로젝트에서 간과하기 쉬운 매우 유용한 디자인 패턴입니다. ✅