问题
Exception in thread \"main\" java.lang.ClassCastException: org.springframework.aop.aspectj.AspectJExpressionPointcut cannot be cast to com.wei.service.IAccountServiceat AOPTest.main(AOPTest.java:9)
原因
- 将切点表达式的id与AccountService的实现类的bean的id取了一样的名字。
<bean id=\"accountService\" class=\"com.wei.service.impl.AccountServiceImpl\" ></bean><aop:config ><aop:pointcut id=\"accountService\" expression=\"execution(* com.wei.service.*.*(..))\"/><aop:aspect id=\"logAdvice\" ref=\"logger\"><!--配置通知的类型,并且建立通知的方法和切入点方法的关联。--><aop:before method=\"printLog\" pointcut-ref=\"accountService\" /></aop:aspect></aop:config>
解决
<bean id=\"accountService\" class=\"com.wei.service.impl.AccountServiceImpl\" ></bean><aop:config ><aop:pointcut id=\"servicePointCut\" expression=\"execution(* com.wei.service.*.*(..))\"/><aop:aspect id=\"logAdvice\" ref=\"logger\"><!--配置通知的类型,并且建立通知的方法和切入点方法的关联。--><aop:before method=\"printLog\" pointcut-ref=\"servicePointCut\" /></aop:aspect></aop:config>
总结
- 如果以后看见类型转换异常,先看是什么类型转换异常,然后再从它的配置入手。