spring aop个人学习

2019-02-13  本文已影响0人  42个艾尔

1.对于一般介绍见AOP的基础

理解 切入点 切面
通知分为:前置通知,后置通知,环绕通知,异常通知,最终通知


面向切面编程add()为切面

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");
    }
}
上一篇下一篇

猜你喜欢

热点阅读