在使用spring aop的时候报错了:The prefix "aop" for element "aop:aspectj-autoproxy" is not bound.原因是有一些地址没有被引入: 
1 以下是一个完整配置AOP的例子。 2 3 首先是文件项目结构:

SpringAOPTest.java 复制代码
1import java.util.ArrayList; 2import java.util.List; 3import org.junit.Test; 4import org.springframework.context.ApplicationContext; 5import org.springframework.context.support.ClassPathXmlApplicationContext; 6 7public class SpringAOPTest { 8 [@Test](https://my.oschina.net/azibug) public void interceptorTest(){ 9 ApplicationContext cxt = new ClassPathXmlApplicationContext("applicationContext-Test.xml"); 10 UserService userService = (UserService)cxt.getBean("userService"); 11 List list =new ArrayList(); 12 list =userService.queryUserList(); 13 System.out.println("sd:"+list.size()); 14 } 15}
复制代码
applicationContext-Test.xml 复制代码
1<?xml version="1.0" encoding="UTF-8"?> 2<beans xmlns="http://www.springframework.org/schema/beans" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" 4 xmlns:tx="http://www.springframework.org/schema/tx" xmlns:jdbc="http://www.springframework.org/schema/jdbc" 5 xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" 6 7 xsi:schemaLocation=" 8 http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd 9 http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd 10 http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-4.0.xsd 11 http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd 12 http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd 13 http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd"> 14 15 16 <!-- 通过配置的方式,定义bean --> 17 <bean id="userService" class="test.UserServiceImpl"></bean> 18 19 <!-- 启用@AspectJ风格的切面声明 --> 20 <aop:aspectj-autoproxy/> 21 22 <!-- 通过配置的方式,定义日志切面bean --> 23 <bean id="aspetbean" class="test.LogInterceptor"/> 24 25 <aop:config> 26 <aop:aspect id="asp" ref="aspetbean"> 27 <!--定义切入点--> 28 <aop:pointcut id="mycut" expression="execution(* test.**.*(..))" /> 29 <!-- 第一个*代表所有的返回值类型 第二个*代表所有的类 第三个*代表类所有方法 最后一个..代表所有的参数。 --> 30 <!--定义通知(Advice)--> 31 <aop:before pointcut-ref="mycut" method="doAccessCheck" /> <!-- 前置通知 --> 32 <aop:after-returning pointcut-ref="mycut" method="doAfterReturning" /> <!-- 后置通知 --> 33 <aop:after-throwing pointcut-ref="mycut" method="doAfterThrowing" /> <!-- 例外通知 --> 34 <aop:after pointcut-ref="mycut" method="doAfter" /> <!-- 最后通知 --> 35 <aop:around pointcut-ref="mycut" method="doBasicProfiling" /> <!-- 环绕通知 --> 36 </aop:aspect> 37 </aop:config> 38</beans>
复制代码
LogInterceptor.java 复制代码
1import org.aspectj.lang.ProceedingJoinPoint; 2/** 3 * 切面 4 * 例子:日志记录 5 */ 6public class LogInterceptor { 7 public void doAccessCheck() { 8 System.out.println("前置通知"); 9 } 10 public void doAfterReturning() { 11 System.out.println("后置通知"); 12 } 13 public void doAfter() { 14 System.out.println("最终通知"); 15 } 16 public void doAfterThrowing() { 17 System.out.println("例外通知"); 18 } 19 public Object doBasicProfiling(ProceedingJoinPoint pjp) throws Throwable { 20 System.out.println("进入方法"); 21 Object result = pjp.proceed(); 22 System.out.println("退出方法"); 23 return result; 24 } 25} 26 27复制代码 28 29User.java 30复制代码 31 32public class User { 33 private String id; 34 private String name; 35 private String sex; 36 private int age; 37 public String getId() { 38 return id; 39 } 40 public void setId(String id) { 41 this.id = id; 42 } 43 public String getName() { 44 return name; 45 } 46 public void setName(String name) { 47 this.name = name; 48 } 49 public String getSex() { 50 return sex; 51 } 52 public void setSex(String sex) { 53 this.sex = sex; 54 } 55 public int getAge() { 56 return age; 57 } 58 public void setAge(int age) { 59 this.age = age; 60 } 61} 62 63复制代码 64 65UserService.java 66复制代码 67 68import java.util.List; 69public interface UserService { 70 public User queryUserById(int id); 71 public List<User> queryUserList(); 72 73}
复制代码
UserServiceImpl.java 复制代码
1import java.util.ArrayList; 2import java.util.List; 3public class UserServiceImpl implements UserService { 4 /** 5 * 通过id查询用户信息 6 */ 7 @Override 8 public User queryUserById(int id) { 9 System.out.println("=========进入queryUserById方法=========="); 10 User user = null; 11 if(id==1){ 12 user = new User(); 13 user.setAge(18); 14 user.setId("1"); 15 user.setName("张三"); 16 user.setSex("1"); 17 } 18 return user; 19 } 20 /** 21 * 查询用户列表 22 */ 23 @Override 24 public List<User> queryUserList() { 25 System.out.println("=========进入queryUserList方法=========="); 26 User user1 = new User(); 27 user1.setAge(18); 28 user1.setId("1"); 29 user1.setName("张三"); 30 user1.setSex("1"); 31 32 User user2 = new User(); 33 user2.setAge(18); 34 user2.setId("1"); 35 user2.setName("张三"); 36 user2.setSex("1"); 37 38 ArrayList<User> userList = new ArrayList<User>(); 39 userList.add(user1); 40 userList.add(user2); 41 return userList; 42 } 43}
复制代码
运行结果: 