私は春の豆を持っている、のは言わせて:Spring Beanのプロンプトを解除することはできますか?
@TransactionAttribute(TransactionAttributeType.REQUIRED)
public class AImpl implements A {
public void setSomeDependency(D dependency) {
// This setter DOES NOT BELONG to interface A
}
}
<bean id="aImpl" class="AImpl"/>
は今、私は統合テスト、それにしたいが、それはあまりにも多くのものを行いますので、最初私は、依存関係D
を模擬する必要があります。 AImpl
インターフェイスを実装し、トランザクションの注釈が含まれているので、生成されたプロキシはインターフェイスA
とのみ互換性がありますので、私はこれを行うことができます。
@Inject @Named("aImpl")
private A a;
ではなく、次のことができます。
結果@Inject @Named("aImpl")
private AImpl a;
、私は私の依存を嘲笑することはできません。
インタフェースA
にvoid setSomeDependency(D dependency)
を追加することは、ビジネス上の意味がないため、オプションではありません。 proxy-target-class="true"
を使用していません。これは、他のBean全体を壊すためです(この属性は、コンテキスト内のすべてのBeanに影響します)。
注入されたBeanをプロンプト解除する方法はありますか?A
ですので、AImpl
にキャストできますか?
[SpringのProxyオブジェクトを実際のランタイムクラスにキャストする]の複製が可能です(http://stackoverflow.com/questions/5976247/casting-a-springs-proxy-object-to-the-actual-runtime-class ) – skaffman
@skaffman:それを指摘してくれてありがとう、私は春のタグに質問を追加しましたよくある質問 –