我們在不使用aspectj的情況下將Spring AOP實現到我們的應用程序中。 我們將自動代理設置爲true,以使其使用CGLIB代理。這是高性能的春天aop使用cglib或jdk代理沒有aspectj?
我們將其作爲代理目標類='true'來解決代理錯誤的原因。作爲副作用,應用程序變得緩慢並需要較長時間執行。
有沒有辦法解決這個問題,這將有助於我們保持性能不變,同時避免代理錯誤。
<!-- Aspects -->
<bean id="loggingAspect" class="web.aspect.LogAspectAroundMethod" />
<!-- PointCut -->
<bean id="myLogPointCut" class="org.springframework.aop.support.JdkRegexpMethodPointcut">
<property name="pattern" value=".*" />
<property name="excludedPatterns">
<list>
<value>.*.isDaemon.*</value>
</list>
</property>
</bean>
<!-- Advisor Around-->
<bean id="myLogAroundAdvisor" class="org.springframework.aop.support.DefaultBeanFactoryPointcutAdvisor">
<property name="adviceBeanName" value="loggingAspect" />
<property name="pointcut" ref="myLogPointCut" />
</bean>
<bean id="aprProxy" class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
<property name="proxyTargetClass" value="true"/>
<property name="beanNames">
<value>*Delegate,*Builder*,*Impl*,*Controller,*Handler,*Helper</value>
</property>
<property name="interceptorNames">
<list>
<value>myLogAroundAdvisor</value>
</list>
</property>
</bean>
顧問代碼如下: -
只提供了實現部分: -
import org.aopalliance.intercept.MethodInterceptor;
import org.aopalliance.intercept.MethodInvocation;
public class LogAspectAroundMethod implements MethodInterceptor{
public Object invoke(MethodInvocation methodInvocation) throws Throwable {
Object result = methodInvocation.proceed();
return result;
}
}
自動代理與Cglib或JDK Dynamic Proxies無關。無論你是困惑的事情,或者你的意思是說'代理目標級'是'真實的'。 –
yes proxy-target-class爲true。剛剛修改了這個問題。 – boopathiraja