JAVA AOP
来源:互联网 发布:win10网络图标红叉 编辑:程序博客网 时间:2024/06/03 15:26
Spring AOP 学习
- AOP描述
- aop 是一种编程范式(编程范式:面向过程,面向对象,面向函数,面向事件,面向切面。。。)
- 不拘于编程语言
- spring AOP
- 切入点匹配方式(Pointcut expression)
- 指示器(designators)
//修饰符正则 返回值 包名 方法名 异常- 匹配方法(execution(modifer-pattern? ret-type-pattern declaring-type-pattern? name-pattern(param-pattern) throws-pattern? ))
- 匹配注解 (@target(),@args(),@within(),@annotation())
- 匹配包/类型 (within())
- 匹配对象(this(),bean(),target())
- 匹配参数(args())
- 通配符(wildcards)
- *(代表所有)
- +(指定类及其子类(遗传))
- ..(任意 参数 ,包)
- 运算符(operators)
- && 与
- || 或
- ! 非
- 指示器(designators)
- advice 注解
- @Before 前置通知
- @After 后置通知
- @AfterReturning 成功后返回通知
- @AfterReturning(value=”pointcut(切入点)”,returning=”return result(返回值)”)
- @AfterThrowing 异常通知
- @Around 环绕通知
- 带有该注解的方法必须返回Object 并接受 ProceedingJoinPoint 参数,调用该参数的proceed
- 切入点匹配方式(Pointcut expression)
- spring AOP 原理(动态代理模式)代理原方法 在之前,之后,异常 嵌入切入点
- 动态代理的实现(用字节码技术动态生成class文件)
- java jdk (只能基于接口)
- AOP代理类实现 InvocationHandler 接口 重写 invoke(Object proxy, Method method, Object[] args) 方法
//返回实现类对象 类加载器 被代理类的接口 接口的实现类
- 调用方通过 Proxy.newProxyInstance(ClassLoader loader, Class[] interfaces, InvocationHandler h) 获取代理类对象
- 被代理对象执行主方法
- cglib (基于类继承,但不能代理静态(static)方法 与 私有方法)
- AOP代理类实现 MethodInterceptor 接口 重写 intercept(Object obj, Method method, Object[] objs, MethodProxy proxy)方法
- 调用方通过 创建 Enhancer 对象 setSuperclass(被代理的超类) setCallback(目标实现类) 创建代理对象 create()
- 被代理对象执行主方法
多AOP 实现 (责任链模式)
List<超类> list ;
int index = 0;调用索引
//强引用
public Chian(List<ChainHandler> list) { this.list = list; }
//执行
public void exec() {
if(list == null || index >= list.size()) {
return;
}
//目标执行处理
list.get(index++).process(this);
}· 需要的超类
//目标方法
abstract void handlerProcess() ;
//调用处理
public void process(Chian chian) {
//调用目标方法
handlerProcess();
//调用下一个
chian.exec();
}
阅读全文
0 0
- JAVA AOP
- JAVA AOP
- java AOP
- Java AOP
- JAVA AOP
- java | 代理 | AOP
- Java平台AOP技术研究
- Java平台AOP技术研究
- Java平台AOP技术研究
- Java平台AOP技术研究
- Java实现AOP
- java 之 AOP
- [java]Spring AOP
- java aop入门教程
- Java平台AOP技术研究
- java 动态AOP
- java代理(AOP)
- Java平台AOP技术研究
- java 实现二叉树的中序遍历
- Mac中第一次使用Android Studio出现unable to access android sdk add-on list的解决方法
- input里添加小图标
- CDH
- Java实训——编写一个窗体应用程序模拟交通信号灯。
- JAVA AOP
- 【POJ
- 关于文件压缩的代码
- 对象式宏 object-like macro
- Go基础编程:作用域
- HTML5JavaScript----1.点击显示对话框2.跳转到另一个网页3.记录历史
- Spring + DbUnit 测试
- LINUX的LVM使用
- tomcat配置访问项目时不需要添加项目名称