Jak mieszać serwery proxy CGLIB i JDK w plikach konfiguracyjnych Spring?

Ten wątek jest związany z problemem, z którym się spotykamtutaj w odniesieniu do potrzeb dostępu do chronionych metod zalecanej klasy. Używam Spring 3.0.6 i stworzyłem aspekt profilowania Springa, który stosuję do znacznej liczby fasoli przy użyciu serwerów proxy JDK.

Jednak ze względu na konieczność uzyskania dostępu do metod chronionych w jednym konkretnym komponencie bean, chciałbym doradzić mu użycie CGLIB. Wszystkie inne fasole, które chciałbym nadal używać JDK Proxies.

Używam mieszanki adnotacji i konfiguracji xml, ale ten szczególny aspekt jest zdefiniowany w konfiguracji XML.

Wiem, że jest<aop:scoped-proxy> tag, ale z tego co mogę powiedzieć, dotyczy to wszystkich aspektów.

Czy mimo to dla pojedynczego aspektu należy zdefiniować użycie 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>

Próbowałem podzielić konfigurację na dwie części i dla jednej konfiguracji określićtarget-class="true" i innitarget-class="false", ale wydaje się, że stosuje CGLIB do wszystkich w tym momencie.

Czy jest jakiś sposób, aby to osiągnąć?

Dzięki,

Eric

questionAnswers(1)

yourAnswerToTheQuestion