Java 之 SpringAspectJ

AspectJ

AspectJ 是一个面向切面的框架,它扩展了 Java 语言(也是一种语言)
定义了 AOP 语法,有专门的便依赖用来生成遵守 Java 字节编码规范的 Class 文件
AspectJ 是一种编译期的用注解形式实现的 AOP

AOP/Spring AOP/AspectJ 的区别

AOP:是一种面向切面的编程范式,是一种编程思想,旨在通过分离横切关注点,提高模块化,可以跨越对象关注点。
Aop的典型应用即spring的事务机制,日志记录。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑
各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。主要功能是:日志记录,性能统计,安全
控制,事务处理,异常处理等等;主要的意图是:将日志记录,性能统计,安全控制,事务处理,异常处理等代码从
业务逻辑代码中划分出来,通过对这些行为的分离,我们希望可以将它们独立到非指导业务逻辑的方法中,进而改变
这些行为的时候不影响业务逻辑的代码。

AspectJ和Spring AOP 是AOP的两种实现方案,这一点要搞清楚。

AspectJ:Aspectj是aop的java实现方案,AspectJ是一种编译期的用注解形式实现的AOP。

Spring AOP
      Spring aop是aop实现方案的一种,有两种实现方式,1是jdk动态代理,2是cglib动态代理。它支持在运
      行期基于动态代理的方式将aspect织入目标代码中来实现aop。但是spring aop的切入点支持有限,而且
      对于static方法和final方法都无法支持aop(因为支持aop。现在的spring整合了aspectj,在spring
      体系中可以使用aspectj语法来实现aop。
1.xml 配置完成 AOP
    创建通知类,添加需要的方法(1.前置 2.后置 3.环绕 4.后置 Returning 5.throwing)
    在配置文件中添加通知类的 bean
    添加
            "execution(* com.xxx.dao.impl.*.*(..)) " 
                id="point"/>
            ref="advice">
                before method="before" pointcut-ref="point"/>
                around method="around" pointcut-ref="point"/>
                after method="after" pointcut-ref="point"/>
                after-returning method="returning" pointcut-ref="point"/>
                after-throwing method="throwing" pointcut-ref="point"/>
            
        
2.注解配置完成 AOP
    1.创建通知类
    2.添加 @Aspect 设置通知类
    3.创建切点方法
    4.给通知方法加上相应的注解
        @After @Before...

你可能感兴趣的:(Java 之 SpringAspectJ)