ServiceLocatorFactoryBean에 궁금한점이 있습니다.
공식문서에서 일반적으로 프로토타입 빈에서 사용하고, 싱글톤 빈의 경우 대상 빈의 직접 세터 또는 생성자 주입이 더 좋다고 되어있습니다.
만약 아래코드처럼 로그인방식이 여러가지고 추가로 늘어날 경우 NaverLoginStrategy, GoogleLoginStrategy등 새로운 클래스만 생성하면 된다고 생각하는데 이때도 ServiceLocatorFactoryBean을 사용하는게 좋지않는걸까요?
provider나 ObjectFactory를 이용하는게 좋은지 아니면 공식문서처럼 setter나 constructor를 주입하는게 좋을지 궁금합니다.
public interface LoginStrategy {
String login(String id, String pw);
}
@RequiredArgsConstructor
@Service("kakao")
public class KakaoLoginStrategy implements LoginStrategy {
private final LoginRepository loginRepository;
@Override
public String login(String id, String pw) {
// 로그인 로직
return "kakao Login";
}
}
public interface LoginFactory {
LoginStrategy getLoginStrategy(String type);
}
@Configuration
public class LoginConfig {
@Bean
public ServiceLocatorFactoryBean loginStrategyFactory() {
ServiceLocatorFactoryBean factoryBean = new ServiceLocatorFactoryBean();
factoryBean.setServiceLocatorInterface(LoginFactory.class);
return factoryBean;
}
}
답변 1
0
로그인 전략을 구현한 빈이 매번 새로 만들어질 게 아니라면 미리 정의해두고, 필요한 타입과 주입 정보를 이용해서 가져다 생성자, 세터 등으로 주입 받아 사용하는게 맞습니다.
의존성 주입이 가능한데 의존성 룩업을 사용할 이유는 없습니다. 매번 새로운 빈을 만드는 프로토타입이 아닌 경우라면요. 당연히 그것도 Provider<T> 방식을 이용하면 되는데, 지금 말씀하신 로그인 전략은 그럴 필요가 없어보입니다.
다만, 이 경우 LoginStrategy를 구현한 빈이 여러개라면 주입 받을 때
컬렉션으로 모두 가져와서 필요한 걸 선택해서 사용하거나
사용할 로그인 방식에 따라서 bean name이나 qualifier 등으로 특정 strategy 빈을 가져와 사용하는
방식이 필요할 겁니다.
강의의 어느 부분을 보시다가 이 내용이 알고 싶으셨는지 궁금하군요. 제가 답변을 드릴 수 있는 건 얼마든지 답을 해드리겠습니다만, 가능하면 강의 내용과 관련된 질문을 해주시면 감사하겠습니다.
1
알려주셔서 감사합니다.
섹션3의 오브젝트와 의존관계에서 관계설정 책임의 분리와 오브젝트 팩토리를 보고 PaymentService가 SimpleExRateProvider와 WebApiExRateProvider를 클라이언트나 오브젝트 팩토리에서 생성할때 유동적으로 생성을 하려면 if나 switch, 컬렉션에 담아서 꺼내쓰는 방법말고 다른방법 없는지 찾아보았습니다.
그래서 위의 ServiceLocatorFactoryBean에 대해 알게되어 알아보다가 궁금증을 해결하고싶어서 질문을 드리게 되었습니다.
강의를 벗어난 질문이지만 답변주셔서 다시한번 감사합니다.
수업을 잘 듣고 있습니다.
0
107
2
jackson(3.0.2 버전) ObjectMapper.readValue 에러타입
0
112
2
템플릿과 콜백의 역할 경계를 구분하는 기준
0
106
1
테스트를 작성하지않아도 되는 경우
0
93
2
오브젝트 정의 중 배열에 대해서
0
71
2
스프링 레거시를 이용하는 회사에서 일을 하게 될것같은데
0
116
2
JpaTransactionManager에 대해 궁금합니다.
0
87
2
스프링빈과 Clock 클래스 관련
0
49
2
Seprate Interface 패턴에 대한 궁금증
0
50
2
테스트의 기준을 어떤식으로 설정하는 것이 바람직한 테스트일까요 ?
0
57
2
오브젝트와 인스턴스
0
41
1
WebApiExRateProvider 템플릿 콜백 패턴을 적용하면서 테스트 코드를 만들어보았습니다.
0
71
2
템플릿 콜백 패턴 관련하여 궁금한 것이 있습니다!
0
68
2
상태 변경 API 질문
0
124
2
빈에 대한 질문
0
99
1
안녕하세요.
0
146
2
Payment 엔티티에 exRateProvider 주입
0
103
1
@Transactional private 사용유무
0
160
1
JdbcClient 생성 질문
0
191
2
안녕하세요 PaymentConfig 질문드립니다.
0
114
2
[공유] 윈도우 사용자를 위한 http 명령어 오류 해결 방법
0
248
2
생성자 파라미터성자 파라미터
0
243
2
토비님 ! BigDecimal 관련 링크를 못찾겠어요
2
352
2
인터페이스 사용에 관하여 질문드립니다.
0
313
3





