关于java:AOP

6次阅读

共计 1511 个字符,预计需要花费 4 分钟才能阅读完成。

概述

Spring 对面向切面编程提供了强有力的反对,通过它让咱们将业务逻辑从应用服务(如事务管理)中分离出来,实现了高内聚开发,利用对象只关注业务逻辑,统问题(如日志、事务等)。Spring 反对用户自定义切面。面向切面编程(AOP)欠缺 spring 的依赖注入(DI),面向切面编程在 spring 中次要体现为两个方面
1. 面向切面编程提供申明式事务管理
2.spring 反对用户自定义的切面
面向切面编程(aop)是对面向对象编程(oop)的补充,面向对象编程将程序分解成各个档次的对象,面向切面编程将程序运行过程分解成各个切面。AOP 从程序运行角度思考程序的构造,提取业务处理过程的切面,oop 是动态的形象,aop 是动静的形象,是对利用执行过程中的步骤进行形象,,从而取得步骤之间的逻辑划分。在不影响主业务的状况下对其业务性能的裁减 
AOP(面向切面)spring 重要的局部,另一个是 IOC(管制反转),基于 OCP 开闭准则

切面术语

2.1 切面(aspect):横切面向对象,个别为一个具体的类
2.2 切入点 (pointcut): 定义了切入扩大业务逻辑的地位(个别须要业务扩大的中央),个别会通过表达式进行相干定义,一个切面能够定义多个切入点
2.3 告诉(Advice):外部封装扩大业务逻辑的具体方法对象,一个切面能够有多个告诉
2.4 连接点(join point):程序执行过程中,封装了某个正在执行的指标办法信息的对象,能够通过此对象获取具体指标办法的相干信息,甚至调用指标办法

切面罕用的注解

@Retention(RetentionPolicy.RUNTIME)  表名此切面在程序运行时起作用
@Target(ElementTypr.
    1.CONSTRUCTOR: 用于形容结构器
    2.FIELD: 用于形容域
    3.LOCAL_VARIABLE: 用于形容局部变量
    4.METHOD: 用于形容办法
    5.PACKAGE: 用于形容包
    6.PARAMETER: 用于形容参数
    7.TYPE: 用于形容类、接口 (包含注解类型) 或 enum 申明
例子:@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD) 
public @interface Requiredlog {String operation() default "";// 默认空串  @Requiredlog(operation =" 布告查问 ")

}

@Aspect  定义切面(创立切面对象)@Component  通知 spring 这个是一般组件

@Pointcut 定义切入点
@annotation 切入点表达式,由此注解形容的办法为切入办法
 @Pointcut("@annotation(com.cy.common.annotation.Log)")
    public void doLoger(){}

告诉类型
//@Around("doLoger()") 失效范畴

@Before:作用:把以后办法看成是前置告诉。实现操作:能够用来对数据的过滤或者预处理的操作

@AfterReturning
作用:把以后办法看成是后置告诉。实现操作:据的缓存更新、革除

@AfterThrowing
作用:把以后办法看成是异样告诉。实现操作:进行谬误日志的记录,报警,发送邮件,短信等等

@After    
作用:把以后办法看成是始终告诉。实现操作:个别是资源开释的操作(最初)@Around
作用:把以后办法看成是盘绕告诉。ProceedingJoinPoint   pj 封装指标对象的相干信息

@Requiredlog(operation = "删除") 在须要扩大的中央引入切面(自定义注解的引入)getDeclaredField 获取属性














正文完
 0