AOP联盟为通知Advice定义了org.aopalliance.aop.Interface.Advice
Spring按照通知Advice在目标类方法的连接点位置,可以分为5类
1、前置通知org.springframework.aop.MethodBeforeAdvice
在目标方法执行前实施增强
2、后置通知org.springframework.aop.AfterReturningAdvice
在目标方法执行后实施增强
3、环绕通知org.aopalliance.intercept.MethodInterceptor
在目标方法执行前后实施增强
4、异常抛出通知org.springframework.aop.ThrowsAdvice
在方法抛出异常后实施增强
5、最终通知
目标方法执行之后执行的通知
通过案例来讲解
有接口的案例
- BeforeAdvice类
public class BeforeAdvice implements MethodBeforeAdvice {
@Override
public void before(Method method, Object[] objects, Object o) throws Throwable {
System.out.println("前置增强==================");
}
}
- StudentDao 类
public interface StudentDao {
public void demo1();
public void demo2();
}
- StudentDaoImpl 类
public class StudentDaoImpl implements StudentDao {
@Override
public void demo1() {
System.out.println("查询...");
}
@Override
public void demo2() {
System.out.println("保存...");
}
}
- 创建一个ApplicationContext.xml的配置文件
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<!--配置目标类======================-->
<bean id="studentDao" class="com.aop.demo.StudentDaoImpl"></bean>
<!--前置通知类型=================-->
<bean id="myBeforeAdvice" class="com.aop.demo.BeforeAdvice"></bean>
<!--Spring的aop产生代理对象-->
<bean id="studentDaoProxy" class="org.springframework.aop.framework.ProxyFactoryBean">
<!--配置的目标类-->
<property name="target" ref="studentDao"></property>
<