我正在尝试使用AOP在进入和离开方法时记录所有方法调用,在我的bean xml中使用下面的bean和aop声明,
<aop:config>
<aop:pointcut id="componentAnnotatedClass" expression="execution(* com.test.*.*.*(..))" />
<aop:advisor advice-ref="loggingAdvisor" pointcut-ref="componentAnnotatedClass" />
</aop:config>
<bean id="loggingAdvisor" class="org.springframework.aop.interceptor.CustomizableTraceInterceptor">
<property name="enterMessage" value="Entering $[targetClassShortName].$[methodName]($[arguments])" />
<property name="exitMessage" value="Leaving $[targetClassShortName].$[methodName](): $[returnValue], Total Execution Time : $[invocationTime]ms" />
</bean>
但是当我使用它时,我会得到如下的异常,
Caused by: org.springframework.aop.framework.AopConfigException: Could not generate CGLIB subclass of class [class com.test.dao.BCommonDataAccessor]: Common causes of this problem include using a final class or a non-visible class; nested exception is java.lang.IllegalArgumentException: Superclass has no null constructors but no arguments were given
当我浏览这个时,我知道cglib需要一个默认的consructor,但在我的应用程序中我有一个参数化构造函数来注入我的数据源。我的数据访问器中没有默认构造函数。是否有任何工作来解决这个问题。 注意:我使用的是spring3.2 vesion