3

ApplicationEvent抽象クラスを拡張するTタイプのイベントオブジェクトのApplicationListenerインターフェースを実装するサービスBean(@Serviceで注釈が付けられた)があります。Spring docs hereには、これの非常に単純で明確な例があります

ただし、@Autowired を使用してこの Bean を他の Bean に注入しようとすると、次のようになります。

org.springframework.beans.factory.NoSuchBeanDefinitionException: 依存関係に一致するタイプ [...] の Bean が見つかりません: この依存関係のオートワイヤー候補として適格な少なくとも 1 つの Bean が必要です。依存アノテーション {@org.springframework.beans.factory.annotation.Autowired(required=true)}

@Resource のようなものを使用しようとすると、クラスキャスト例外が発生します (1 つのタイプのリソースを注入しようとして、プロキシを取得しようとしています)。

4

1 に答える 1

6

@Resource のようなものを使用しようとすると、クラス キャスト例外が発生します (1 つのタイプのリソースを注入しようとして、プロキシを取得しようとしています)。

これは、クラスごとに参照しようとしているように聞こえますが、インターフェイスベースの JDK プロキシとして配線されています。

このクラスがある場合:

@Service
public class FooServiceImpl implements FooService{}

次のように配線します。

@Autowired
private FooService fooService;

ではない:

@Autowired
private FooServiceImpl fooService;

参照:

于 2011-07-11T14:25:45.847 に答える