39

誰かがProxyFactoryBeanを簡単に説明できますか?

私はこれが多くの場所で引用されているのを見ます。

4

2 に答える 2

55

ProxyFactoryBeanインターセプター ロジックを既存のターゲット Bean に適用するために使用されるため、その Bean のメソッドが呼び出されると、そのメソッド呼び出しの前後にインターセプターが実行されます。これは、アスペクト指向プログラミング (AOP) の例です。

これは、簡単な例を使用して最もよく説明されています。AOP の典型的な使用例は、メソッド呼び出しの結果にキャッシングを適用することです。ProxyFactoryBeanこれは、次のように接続できます。

<bean id="targetService" class="com.x.MyClass"/>

<bean id="cachingInterceptor" class="com.x.MyCachingInterceptor"/>

<bean id="cachedService" class="org.springframework.aop.framework.ProxyFactoryBean">
    <property name="target" ref="targetService"/>
    <property name="interfaces">
        <list>              
            <value>com.x.MyService</value>
        </list>
    </property>
    <property name="interceptorNames">
        <list>
            <value>cachingInterceptor</value>
        </list>
    </property>
</bean>

インターフェースを実装するtargetServicetypeの Beanがあります。インターフェースを実装するというインターセプター Bean もあります。com.x.MyClasscom.x.MyServicecachingInterceptororg.aopalliance.intercept.MethodInterceptor

cachedServiceこの構成は、インターフェースを実装すると呼ばれる新しい Bean を生成しMyServiceます。そのオブジェクトのメソッドへの呼び出しは、最初にcachingInterceptorオブジェクトのinvoke()メソッドを介して渡されます。この場合、内部キャッシュで以前のメソッド呼び出しの結果が検索されます。キャッシュされた結果を返すか、メソッド呼び出しが の適切なメソッドに進むことを許可しtargetServiceます。

targetServiceそれ自体はこれについて何も知りません。この AOP のすべてが進行していることを完全に認識していません。

ProxyFactoryBeanさまざまな理由 (リモーティング スタブ、トランザクション管理など) でプロキシを生成するために Spring 内部で頻繁に使用されますが、アプリケーション ロジックでの使用にも完全に適しています。

于 2010-08-16T07:58:24.090 に答える
6

ProxyFactoryBean は、アスペクトを既存の Bean に適用します。既存の Bean (ターゲット Bean) から開始します。この Bean は、提供するアスペクトを追加するために "ラップ" します。返された Bean は、元の Bean と同じインターフェースを持ちますが、ターゲット Bean のメソッドに追加の側面が織り込まれています。

于 2010-08-15T23:16:46.283 に答える