43

私はこのSpring構成を持っています:

<bean id="boo" class="com.x.TheClass"/>

クラスTheClassはを実装しTheInterfaceます。次に、この(架空の)Javaコードがあります。

@Autowired
TheInterface x;

@Autowired
TheClass y;

の自動配線はTheInterface機能しますが、の自動配線はTheClass失敗します。春は私NoSuchBeanDefinitionExceptionにクラスのためのを与えます。

クラスではなくインターフェイスを配線できるのはなぜですか?

4

1 に答える 1

56

通常、両方が機能します。インターフェースまたはクラスを自動配線できます。

おそらく、コンテキストのどこかに自動プロキシジェネレータがありboo、生成されたプロキシオブジェクトでBeanをラップしています。このプロキシオブジェクトはを実装TheInterfaceしますが、ではありませんTheClass。自動プロキシを使用する場合は、実装ではなく、インターフェイスにプログラムする必要があります。

可能性のある候補はトランザクションプロキシです-Springトランザクションを使用していますか、AspectJを使用していますか@Transactional

于 2010-03-05T14:51:48.883 に答える