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