0

XML ベースの Spring 構成を使用して、保護されたメソッドへの呼び出しをサード パーティ クラスにラップしたいと考えています。からいくつかの春のクラスを配線しましたorg.springframework.aop.support。パブリック メソッドでは機能しますが、保護されたメソッドでは失敗します。

<bean id="sampleAutoProxyCreator" class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
<property name="proxyTargetClass" value="true" />
<property name="beanNames">
    <list>
        <value>thrirdPartyBean</value>
    </list>
</property>
<property name="interceptorNames">
    <list>
        <value>sampleAdvisor</value>
    </list>
</property>
</bean>
<bean id="sampleMethodNamePointcut" class="org.springframework.aop.support.NameMatchMethodPointcut">
    <property name="mappedNames">
        <list>
            <value>publicMethodThatWorks</value>
            <value>protectedMethodThatDoesNotWork</value>
        </list>
    </property>
</bean>
<bean id="sampleAdvice" class="sample.MyMethodInterceptor" />
<bean id="sampleAdvisor" class="org.springframework.aop.support.DefaultPointcutAdvisor">
    <property name="pointcut" ref="sampleMethodNamePointcut" />
    <property name="advice" ref="sampleAdvice" />
</bean>

保護されたメソッドで動作するようにこれを微調整するにはどうすればよいですか?

4

1 に答える 1

0

コメントのリンクされた質問/回答にあるように、Springs AOP プロキシはメソッドにのみ適用できますpublic

JDK プロキシでは、これは不可能です。プロキシにはターゲット オブジェクトのインターフェイス タイプしかないため、そのpublicメソッドを介してのみ対話できるためです (インターフェイスで宣言されたすべてのメソッドは であることを思い出してpublicください)。

GGLIB プロキシを使用すると、プロキシにはターゲット オブジェクトのクラス タイプがあるため、そのprotectedメソッドと対話できます。プロキシメカニズム間の一貫性の理由から、許可しないと思います。

于 2014-03-31T18:18:07.093 に答える