인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

정동규님의 프로필 이미지
정동규

작성한 질문수

생산성을 향상시키는 스프링부트 기반의 API 템플릿 프로젝트 구현

SocialLoginApiServiceFactory 클래스

작성

·

255

·

수정됨

0

안녕하세요 강사님!! 강의 정말 잘 듣고있습니다, 강의를 다 들은 후 전체적으로 흐름을 따라가면서 확인을 해보고 있는데요, SocialLoginApiServiceFactory 클래스에서 이해가 잘 가지 않는 부분이 있어 질의드리고자 합니다.

먼저 SocialLoginApiServiceFactory에서는socialLoginApiServices 이라는 map 자료구조에 키 값으로 빈 이름이, value 값에는 SocialLoginApiService를 구현한 impl(ex, KakaoLoginApiServiceImpl) 클래스가 들어가는 것으로 이해했습니다. 현재는 map에 value가 KakaoLoginApiServiceImpl 1개만 저장이 되어있고, 만약 네이버나 구글 등 다른 impl을 구현하면 갯수가 늘어나는 것으로 이해했는데 제가 이해한게 맞을까요??

만약 제가 이해한 것이 맞다면, socialLoginApiServices에 key와 value가 어떤 방식으로 저장되는지 궁금합니다. 상속관계의 Bean에 대해서 Springboot에서 알아서 세팅을 해주는 것인가요??

관련 코드 첨부하겠습니다

 

@Service
public class SocialLoginApiServiceFactory {

    private static Map<String, SocialLoginApiService> socialLoginApiServices;
    // map에는 SocialLoginApiService 구현체가 각각 들어갈 것임

    public SocialLoginApiServiceFactory(Map<String, SocialLoginApiService> socialLoginApiServices) {
        this.socialLoginApiServices = socialLoginApiServices;
    }

    public static SocialLoginApiService getSocialLoginApiService(MemberType memberType) {
        String socialLoginApiServiceBeanName = "";

        if(MemberType.KAKAO.equals(memberType)) { //멤버 타입이 카카오면
            socialLoginApiServiceBeanName = "kakaoLoginApiServiceImpl"; //빈 이름에 카카오 서비스 구현체 저장
        }
        return socialLoginApiServices.get(socialLoginApiServiceBeanName);
        // 빈 이름을 키 값으로 활용하여 구현체(KakaoLoginApiServiceImpl) 반환
    }

}

답변 1

0

구파고님의 프로필 이미지
구파고
지식공유자

안녕하세요 말씀해주신것처럼 현재는 map에 value가 KakaoLoginApiServiceImpl 1개만 저장이 되어있고, 네이버나 구글 등 다른 impl을 구현하면 map에 key로 빈이름, value로 소셜로그인 구현체 빈들이 들어가있다고 생각해주시면됩니다.

 

빈주입 같은 경우에는 스프링컨테이너에 자동으로 빈들이 등록되는데, 이때 SocialLoginApiServiceFactory을 빈으로 만들기 전에 소셜 로그인 구현체들을 빈으로 먼저 생성하고 해당 빈들을 SocialLoginApiServiceFactory의 map에 세팅해서 주입해준다고 생각해주시면됩니다.

정동규님의 프로필 이미지
정동규
질문자

답변 감사합니다. 그렇다면 map에 세팅해서 주입해주는 것도 스프링 컨테이너에서 자동으로 진행되는 부분일까요??

구파고님의 프로필 이미지
구파고
지식공유자

네네 스프링컨테이너에서 해주는 부분입니다.

정동규님의 프로필 이미지
정동규

작성한 질문수

질문하기