最近在跟着网易云课堂的spring课程学习,学到第17节使用springAOP实现方法拦截,执行前置方法时,遇到了问题,首先是提示
bean.xml文件里无法找到元素aop:aspect-autoproxy,关于这个,需要在xml文件里添加命名空间以及引入相关文件,但是注意这里有顺序要求、
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop.xsd
这两行一定要紧挨着,不可以和其他的交错,正确的顺序如下所示
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop.xsd">
<aop:aspectj-autoproxy/>
<bean id="myInterceptor" class="Service.MyInterceptor"></bean>
<bean id="personService" class="Service.impl.PersonServiceBean"></bean>
</beans>
这个问题解决后,又遇到了error at ::0 can't find referenced pointcut这个问题
网上查了下,原因是使用的aspectjrt.jar和aspectjweaver.jar两个文件的版本和JDK的版本不符合,JDK版本高的话,对应的要求这两个jar包文件版本要高,具体是哪个引起的我没有细看,而是直接去官网下载了最新的aspectj-1.8.4.jar
下载地址
http://www.eclipse.org/aspectj/downloads.php
这里注意下,下载下来的是一个可运行jar包,需要在命令行里面使用java -jar aspectj-1.8.4.jar 安装这个文件,选择的安装目录下会生成lib目录,里面有四个jar文件,然后再将这几个jar文件添加到UserLibrary,在我这里就是专门为学习spring简历的一个用户库