私は、ログイン機能の両方だけでなく@Component
としてannotedされている2つの具象クラスFacebookSignInImpl
とNormalSignInImpl
によって実装され抽象クラスの依存性注入
@Component
public abstract class SignIn {
public abstract LogInOperationToken signin(User user, HttpServletRequest request);
}
ための抽象クラスを持っています。次のように
さて、私はサービスクラスを持っている:
@Service
public class SignInService {
@Autowired(required = true)
private SignIn signIn;
public SignInService(@Qualifier("signIn") SignIn signin) {
this.signIn = signin;
}
public LogInOperationToken signin(User user, HttpServletRequest request) {
return signIn.signin(user,request);
}
}
あなたが見ることができるように、それはコンストラクタのパラメータとして抽象クラスを取ります。
私が達成しようとしているのは、いくつかのフラグをチェックしてそれに基づいて、抽象クラスに適切な実装を割り当てます:ノーマルまたはFacebookのサインインです。 SignIn
は、それがSignInService
に、コンストラクタに割り当てられているように、私はそれを@Autowire
することができますどのように抽象クラスであるので
SignIn signIn = null;
if(flag.equals("facebook")){
signIn = new FacebookSignInImpl();
}
else{
signIn = new NormalSignInImpl();
}
SignInService signInService = new SignInService(signIn);
signInService.signIn(user, request);
:春の依存性注入がなければ、私のような何かをするだろう。それ以上の説明が必要な場合はコメントしてください。ありがとう。
を働きます。 – manish