どのよう@Autowiredサービスの具体的な実装に?

UHDante:

私は、次のような状況があります。

public interface ServiceAura extends Serializable { }

@Service
public class ServiceA implements ServiceAura {
    ....
}

@Service
public class ServiceB implements ServiceAura {
    ....
}

今、コントローラから、私は別のことでそれらの両方を呼び出す必要があります:

@Path("")
@Controller
public class ServiciosAuraPortalRESTfulService {

    @Autowired
    private ServiceAura srvA;

    @Autowired
    private ServiceAura srvB;

}

私は@Qualifiedについて読んだことがある、これが唯一の方法ですか?どのように私はこれをアーカイブすることができますか?

アレックス・ロイグ:

あなたが正しい。あなたは使用することができ@Qualifier("ServiceA")、あなたがautowireしたいの実装を指定します。

@Path("")
@Controller
public class ServiciosAuraPortalRESTfulService {

    @Autowired
    @Qualifier("ServiceA")
    private ServiceAura srvA;

    @Autowired
    @Qualifier("ServiceB")
    private ServiceAura srvB;

}

サービス自体では、あなたは、アノテーションを使用することができます@Primary1が希望するデフォルトの実装であるかを指定します。

あるいは、特定のBeanを取得するために、アプリケーション・コンテキストを使用することができます。あなたはautowireする必要がありますApplicationContextクラスをし、その後でそれを取得しますServiceAura srvA = context.getBean(ServiceA.class);

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=186884&siteId=1