1.对于一般介绍见AOP的基础
理解 切入点 切面
通知分为:前置通知,后置通知,环绕通知,异常通知,最终通知
2.普通类变成特殊类的3个方法
加入接口 继承类 加注解 加配置
加入接口所需要实现的接口为
org.springframework.aop.MethodBeforeAdvice before()/*后面的为方法*/
.AfterReturningAdvice afterReturning()
.ThrowAdvice wu
.Methodlnterceptor invoke()
3.架包
需要aopaliance.jar与aspectjweaver.jar
xml启用
<!-- Aop配置 -->
<aop:config>
<!-- 定义一个切入点表达式: 拦截哪些方法 -->
<aop:pointcut expression="execution(* com.itmayiedu.*.*(..))" id="pt"/>
<!-- 切面 -->
<aop:aspect ref="aop">
<!-- 环绕通知 -->
<aop:around method="around" pointcut-ref="pt"/>
<!-- 前置通知: 在目标方法调用前执行 -->
<aop:before method="begin" pointcut-ref="pt"/>
<!-- 后置通知: -->
<aop:after method="after" pointcut-ref="pt"/>
<!-- 返回后通知 -->
<aop:after-returning method="afterReturning" pointcut-ref="pt"/>
<!-- 异常通知 -->
<aop:after-throwing method="afterThrowing" pointcut-ref="pt"/>
</aop:aspect>
</aop:config>
注解aop开启
<aop:aspectj-autoproxy></aop:aspectj-autoproxy>
public class Aop {
/*前置通知,方法之前执行*/
@Before("execution(* mainClass.Person.user(..)))")//定义切面方法
public void start(){
System.out.println("吃东西");
}
public void end(){
System.out.println("结束吃东西");
}
}
@Component
public class Person {
private String name="ff";
@Resource
private Aop aop;
public void user(){
System.out.println(name+".......");
}
private void jj(){
System.out.println("jj");
}
}