誰かがProxyFactoryBeanを簡単に説明できますか?
私はこれが多くの場所で引用されているのを見ます。
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>
インターフェースを実装するtargetService
typeの Beanがあります。インターフェースを実装するというインターセプター Bean もあります。com.x.MyClass
com.x.MyService
cachingInterceptor
org.aopalliance.intercept.MethodInterceptor
cachedService
この構成は、インターフェースを実装すると呼ばれる新しい Bean を生成しMyService
ます。そのオブジェクトのメソッドへの呼び出しは、最初にcachingInterceptor
オブジェクトのinvoke()
メソッドを介して渡されます。この場合、内部キャッシュで以前のメソッド呼び出しの結果が検索されます。キャッシュされた結果を返すか、メソッド呼び出しが の適切なメソッドに進むことを許可しtargetService
ます。
targetService
それ自体はこれについて何も知りません。この AOP のすべてが進行していることを完全に認識していません。
ProxyFactoryBean
さまざまな理由 (リモーティング スタブ、トランザクション管理など) でプロキシを生成するために Spring 内部で頻繁に使用されますが、アプリケーション ロジックでの使用にも完全に適しています。
ProxyFactoryBean は、アスペクトを既存の Bean に適用します。既存の Bean (ターゲット Bean) から開始します。この Bean は、提供するアスペクトを追加するために "ラップ" します。返された Bean は、元の Bean と同じインターフェースを持ちますが、ターゲット Bean のメソッドに追加の側面が織り込まれています。