に基づいて、私は「Session.class」を次ています条件付き@Autowired私は春に新たなんだと私はいくつかのコードをリファクタリングしようとしているコンストラクタの引数
public class Session {
...
private Wallet currenetWallet;
...
public Session(..., int sessionId, ...) {
...
ThirdPartyToken token = context.getBean(ThirdPartyTokenDAO.class).getThirdPartyToken(sessionId);
if (token.getExternalUser().getMerchant().getType().equals("SOAPMerchant")) {
currenetWallet = (Wallet) context.getBean("SOAPExternalWallet", token);
}
else if (token.getExternalUser().getMerchant().getType().equals("JSONMerchant")) {
currenetWallet = (Wallet) context.getBean("JSONExternalWallet", token);
}
else {
currenetWallet = (Wallet) context.getBean("GuestWallet", 1000.0);
}
...
}
}
私はcontext.getBeanを使用していることを読みます()は悪い習慣であり、クラスをuntestableにします。 上記の方法でcurrentWalletを配線する正しい方法は何でしょうか?
3つの値を入力し、店舗タイプに基づいてどちらを使用するかを選択します –
今日は3つですが、明日は12種類がありますが、それらをすべてワイヤリングするのは無駄でしょうか? 私はこの解決策が気に入っていますが、実装するのが最も簡単です –
あなたは実際に 'sessionId'ではなく' Wallet'クラスに依存していますので、これはコンストラクタで配線していなければなりません。システムがどのくらい定義されているかに応じて、 'Wallet'プロトタイプBeanを作成することができます。このBeanの作成は' Token'に依存し、そのセッションIDに依存します。 –