Como misturar proxies CGLIB e JDK em arquivos de configuração do Spring?

Este tópico está relacionado a um problema que estou encontrandoaqui em relação às necessidades de acesso a métodos protegidos de uma classe aconselhada. Estou usando o Spring 3.0.6 e criei um aspecto de perfilação Spring que estou aplicando a um número significativo de beans usando proxies do JDK.

No entanto, devido à necessidade de acessar métodos protegidos em um determinado bean, eu gostaria de avisá-lo usando o CGLIB. Todos os outros beans eu gostaria de continuar a usar os proxies do JDK.

Estou usando uma mistura de anotações e configuração xml, mas esse aspecto específico é definido na configuração XML.

Eu sei que existe<aop:scoped-proxy> tag, mas pelo que eu posso dizer, isso se aplica a todos os aspectos.

Existe alguma maneira de definir um único aspecto para usar o CGLIB?

<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>

Eu tentei dividir a configuração em dois e, para uma configuração, especifiquetarget-class="true" e o outrotarget-class="false", mas parece aplicar CGLIB a todos nesse ponto.

Existe alguma maneira de conseguir isso?

Obrigado,

Eric

questionAnswers(1)

yourAnswerToTheQuestion