SocialLoginApiServiceFactory 주입 시점 2 번째 질문
236
작성한 질문수 77
https://www.inflearn.com/questions/658825
여기서 질문 해주신 부분 추가적으로 질문이 있습니다.
SocialLoginApiServiceFactory.java
해당 파일에서
@Service
public class SocialLoginApiServiceFactory {
private static Map<String, SocialLoginApiService> socialLoginApiServices;
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);
}
}
socialLoginApiServices 객체 자동으로 주입 시켜준다고 했는데요
즉 SocialLoginApiService 구현체들을 Map 으로 자동으로 주입 시켜준다고 배웠습니다.
그런데 Map Key 값을 보면 String 이라서
어떻게 보면 Key 값을 철자라도 틀리면 반환값을 얻을수 없는 문제점이 있을꺼같아서요
그래서
public enum MemberType {
KAKAO;
public static MemberType from(String type) {
return MemberType.valueOf(type.toUpperCase());
}
public static boolean isMemberType(String type) {
List<MemberType> memberTypes = Arrays.stream(MemberType.values())
.filter(memberType -> memberType.name().equals(type))
.collect(Collectors.toList());
return memberTypes.size() != 0;
}
}private static Map<MemberType, SocialLoginApiService> socialLoginApiServices;Key 값을 MemberType 으로 규정하고 하는것이 편리하게 쓸수 있을꺼같은데요
이렇게 사용할려면 자동으로 빈 등록은 안되고 어쩔수 없이 @Bean 이용해서 직접 커스텀 빈 등록 해야 하나요??
답변 1
0
안녕하세요 리나님. 먼저 key값의 경우 스프링이 빈의 이름으로 key값을 지정해주기 때문에 카카오 로그인 같은경우는 kakaoLoginApiServiceImpl 빈을 가지고 오도록 지정해주었습니다. 만약 enum을 사용하고 싶으시다면 enum을 하나 정의하고 소셜 로그인 api 구현체의 빈이름을 관리를하고 해당 enum을 이용해서 빈의 이름을 지정해줄 수 있을것으로 보입니다. 그러면 SocialLoginApiServiceFactory에서 해당 enum을 통해서 key값을 선택할 수 있구요
OAUTH2 질문
0
105
2
카카오토큰관련
0
94
2
auditing
0
90
1
전역에러처리질문
0
126
2
토큰 발급 관련 문의 드립니다.
0
143
2
이 흐름이 맞을까요??
0
136
2
OpenFeign을 어떤 상황에서 어떻게 사용하는지 감이 안옵니다...
0
234
2
도메인형 패키지 구조 질문
0
256
1
application.yml token 선언 시 오류
0
336
1
토큰발행시 500 INTERNAL_SERVER_ERROR
0
162
1
oauth 회원가입 시 필수 추가 정보는 어떤 식으로 받으시나요?
0
293
2
io.jsonwebtoken.security.WeakKeyException 해결방법
0
399
1
리프레시 토큰 사용 관련 문의 건
0
345
1
Xss 에서 WebConfig 오류 발생됩니다.
0
692
1
applycation.yml 의 readTimeout 이 적용이 안됩니다.
0
706
2
강사님 Swagger에 질문드립니다.
0
297
2
kakao token 발급 시 에러
0
741
2
아직 초반부분인데 질문이있습니다.
0
213
1
socialLoginApiService map 주입
0
294
1
전역 에러 처리 메시지 관리
0
618
2
안드로이드 스튜디오와 협업
0
650
2
String accessToken = authorizationHeader.split(" ")[1];은 accessToken이 맞나요?
0
313
1
SocialLoginApiServiceFactory 생성자 관련 질문입니다.
0
260
1
OAuthAttributes 클래스의 toMemberEntity의 파라미터로 memberType이 들어가야하는 이유가 궁금합니다.
0
449
2





