AOP在SpringMVC的Controller里无效的问题

lirongsen3022 2013-03-18 03:36:42
主要是要读取Controller层的操作记录,配置如下:
springmvc-servlet.xml:

<aop:config >
<aop:aspect id="goLogAspect" ref="AfterReturningAdvice">
<aop:pointcut id="actionPointcut" expression="execution(* *.*(..))" />
<aop:after pointcut-ref="actionPointcut"
method="logAfter" />
</aop:aspect>
</aop:config>
<bean id="AfterReturningAdvice" class="cn.ronglian.common.util.log.CalculatorLogAspect"></bean>

CalculatorLogAspect:

public class CalculatorLogAspect {
private MyLogger logger = new MyLogger();
public void logAfter(JoinPoint joinPoint)
{
logger.log("{After} method:"+joinPoint.getSignature().getName());
}
}

现在问题是启动Tomcat的时候报错:
严重: StandardWrapper.Throwable
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping#0': Initialization of bean failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.web.servlet.handler.MappedInterceptor#0': Initialization of bean failed; nested exception is org.springframework.aop.framework.AopConfigException: Could not generate CGLIB subclass of class [class org.springframework.web.servlet.handler.MappedInterceptor]: Common causes of this problem include using a final class or a non-visible class; nested exception is java.lang.IllegalArgumentException: Cannot subclass final class class org.springframework.web.servlet.handler.MappedInterceptor
...全文
389 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
lirongsen3022 2013-03-19
  • 打赏
  • 举报
回复
引用 2 楼 a979832261a979832261 的回复:
打错了,是AOP实现代理时..
有没有什么解决方案呀?
  • 打赏
  • 举报
回复
打错了,是AOP实现代理时..
  • 打赏
  • 举报
回复
菜鸟猜测:IOC在初始化的动态代理时,cglib代理的类不能使private static final的类,cblib是通过创建被代理类子类的方式进行的,org.springframework.web.servlet.handler.MappedInterceptor 是接口 ,jdk动态代理接口类。

81,091

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧