1

次の問題が手元にありました。このサービスを自動配線する必要があります。

@Service       
public class myService implements ServiceInterface {}

ServiceInterface で宣言されたメソッドだけでなく、オートワイヤーされた myService クラスのすべてのメソッドにアクセスできるようにしたいと考えています。問題は、Qualifier/Resource Annotation を使用してこのサービスを自動配線する必要があるようですが、

@Autowired
@Qualifier("myService")
ServiceInterface noGoodService; 

myService のすべてのメソッドにアクセスできるわけではありません。どうすればこれを達成できますか?

4

1 に答える 1

0

それがあなたが使用する実際のコードであり、構成で宣言されたトランザクションやその他の AOP のようなものがない場合は、実際のサービスを注入することで完全に問題ないはずです。ただし、一般的に、Spring は、トランザクション、セキュリティなどの構成に基づいてプロキシを作成します。

デフォルトでは、Spring はインターフェイス ベースの JDK 動的プロキシを作成します。サービスのすべてのインターフェースを実装するクラスが動的に作成されます (これらの素敵な myService$proxy1 クラス)。このクラスはのインスタンスではなく、myService動的ServiceInterfaceオブジェクトをその型にキャストすることはできません。

インターフェイスで必要なメソッドを定義するか (それがインターフェイスの目的全体です。それ以外の場合、インターフェイスはまったく役に立ちません)、クラスパスで CGLib を必要とするクラスベースのプロキシを使用します。

于 2013-09-17T07:17:35.713 に答える