Wie mische ich CGLIB- und JDK-Proxys in Spring-Konfigurationsdateien?

Dieser Thread hat mit einem Problem zu tun, auf das ich stoßehier in Bezug auf die Bedürfnisse für den Zugang zu geschützten Methoden einer beratenen Klasse. Ich verwende Spring 3.0.6 und habe einen Spring-Profilerstellungsaspekt erstellt, den ich mithilfe von JDK-Proxys auf eine erhebliche Anzahl von Beans anwende.

Aufgrund der Notwendigkeit, auf geschützte Methoden in einer bestimmten Bean zuzugreifen, möchte ich jedoch die Verwendung von CGLIB empfehlen. Alle anderen Bohnen möchte ich weiterhin mit JDK Proxies verwenden.

Ich verwende eine Mischung aus Anmerkungen und XML-Konfiguration, aber dieser spezielle Aspekt wird in der XML-Konfiguration definiert.

Ich weiß, dass es das gibt<aop:scoped-proxy> tag, aber soweit ich das beurteilen kann, gilt das für alle aspekte.

Gibt es überhaupt zu definieren, dass ein einzelner Aspekt stattdessen CGLIB verwendet?

<code><aop:config>
    <aop:aspect id="Profiler" ref="lendingSimulationServiceProfilerInterceptor">
        <!-- info -->
        <aop:around method="infoProfiler"
                    pointcut="execution(* com.cws.cs.lendingsimulationservice.service.LendingSimulationServiceImpl.calculate*(..))"  />

        <!-- debug -->
        <aop:around method="infoProfiler"
                    pointcut="execution(* com.cws.cs.lendingsimulationservice.process.LendingSimulationProcessImpl.calculate(..))"  />

        <aop:around method="infoProfiler"
                    pointcut="execution(* com.blaze.BlazeEngine.invokeService(..))"  />

        <!-- trace -->
        <aop:around method="traceProfiler" 
                    pointcut="execution(* com.calculator.dao.impl.LendingSimulationDaoImpl.*(..))"  />

        <!-- NEED TO DEFINE THIS PARTICULAR ASPECT AS CGLIB -->
        <aop:around method="traceProfiler" 
                    pointcut="execution(* com.cws.cs.lendingsimulationservice.util.pool.JAXBPoolImpl.*(..))"    />
    </aop:aspect>
</aop:config>
</code>

Ich habe versucht, die Konfiguration in zwei zu teilen und für eine Konfiguration anzugebentarget-class="true" und der anderetarget-class="false", aber an diesem Punkt scheint es, CGLIB auf alle anzuwenden.

Gibt es eine Möglichkeit, dies zu erreichen?

Vielen Dank,

Eric

Antworten auf die Frage(1)

Ihre Antwort auf die Frage