关于aop:AOP基础1

Spring AOP

1.什么是AOP?

    AOP是一种面向切面的编程思维,是OOP的一种扩大和补充;和OOP(面向对象)相比,是一种动静过程;AOP,它可能在预编译阶段和运行期动静代理的形式,实现在不批改代码的状况下给程序增加额定的性能。
    AOP常被用在非核心业务的扩大上,进步零碎的可扩展性。例如日志治理,权限治理,事务处理,缓存等。

2.CGLIB(默认),JDK

    AOP的底层是基于动静代理实现的
    (1)如果被代理对象实现的是接口,就能够应用JDK动静代理机制对指标创立代理对象(代理对象和被代理对象实现同一个接口)
    (2)如果被代理对象没有实现接口,就能够应用CGLIB代理机制创立代理对象(代理对象implemens被代理对象) 
    (3)应用JDK时须要配置文件中:spring.aop.proxy-target-class=false

3.AOP相干术语

    (1)Aspect:定义一个切面类,被此注解形容的类是一个Spring AOP的一个切面类
    (2)PointCut:定义一个切入点办法;只能存在Aspect中;属性值是切入点的切入点表达式,有多种;切入点是连接点的汇合;
    (3)Joinpoit:程序执行中的连接点,个别指向被拦挡到的指标办法
    (4)Advice:定义一个告诉,及切入点要执行的办法;其属性值是切入点表达式
    

4.切入点表达式

4.1 bean:用于匹配bean对象的所有办法
    bean表达式个别用于类级别,实现粗粒度的切入比方:
    bean(userServiceImpl) 指定userServiceImpl中的所有办法
    bean(*ServiceImpl) 指定以ServiceImpl结尾的所有类的所有办法
    
4.2 annotation:
    @annotation是办法级别的细粒度切入办法,比方:
    ("@annotation(com.com.py.pj.common.annotation.SysLogRequired)")
    其中com.com.py.pj.common.annotation是创立注解的包;SysLogRequired是注解名
    应用此接入点表达式时,须要把自定义的注解写在业务办法上。
    
    

5.须要的依赖

<dependency>

     <groupId>org.springframework.boot</groupId>

     <artifactId>spring-boot-starter-aop</artifactId>

</dependency>

6.代码实现

参考

AOP之记录用户日志行为

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理