최근 실무를 진행하면서 여전히 많이 부족함을 느낀 일이 있었다. 어떻게 보면 여전히 기본기가 부족하다고 할 수 있는 사건.
정책에 따라 생성된 Bean을 Map<String, Bean> 컬렉션을 통해 호출하는 코드를 보았는데, 바로 이해하지 못했다.
프로젝트 전역적으로 보아도 해당 Map에 Bean을 put 해주는 코드는 존재하지 않았던 것.
대략적인 코드는 아래와 같은 구조였다.
@Service
@RequiredArgsConstructor
public class MyService {
private final Map<String, MyBean> myBeanMap;
private MyBean getMyBean(String beanName) {
return myBeanMap.get(beanName);
}
}
MyBean 객체는 상속을 통해 다형성을 활용한 구현이 가능한 구조였는데, 이 때 스프링 컨테이너에 Bean은 이름:객체 구조로 저장된다.
여기에서 Collection인 Map을 활용하여 저장된 Bean을 key로 하여 받으면, 해당 Bean을 가져올 수 있는 구조. 결국 직접 Map에 넣어주지 않아도 스프링 컨테이너에 지정된 빈을 가져올 수 있는 것이다. 따라서, 다형성 구조로 생성되어 있는 Bean을 효과적으로 가져올 수 있게 된다.
마찬가지로 List를 통해 해당 Bean을 호출하면, 컨테이너에 주입된 모든 타입의 객체를 가져올 수 있게 된다.
참고자료 : https://7357.tistory.com/117
'개발 > Spring' 카테고리의 다른 글
[Spring] Security의 인가(Authorization) 실패 시 처리 (0) | 2023.07.02 |
---|---|
[Spring] Security와 Jwt 사용을 통한 인증, 인가 도입기 (0) | 2023.06.25 |
[Spring] Security 정리(1) (0) | 2022.05.15 |
[Spring]빈 스코프와 Provider (0) | 2022.03.20 |
[Spring]Lombok(롬복) (0) | 2022.03.13 |