1、知识体系
aspectJ是aop最流行的一种实现方式,aspectJ的知识体系大致分为以下四个部分。
- 静态切面:
- 添加静态属性
- 修改类的实现,继承关系,例如实现某个接口,继承某个对象。
- 动态切面:
- 4个核心对象,join point, pointcut表达式,advice, aspect
- 两种语法:创建aspect,注解方式。
- weaving机制
- source weaving:源资源为aspect和Java文件。
- binary weaving:源资源为aspect编译之后的class和Java编译之后的class。
- load time weaving:原资源为aspect编译之后的class和Java编译之后的class,但是需要配置文件。
- 集成spring
- spring框架天然支持AOP。即如何熟练的使用spring AOP。
2、原著
本博客系列是《AspectJ in Action Second Edition》的阅读笔记。本书分为两个部分,第一部分介绍原理和概念,第二部分介绍各种场景。本博客只介绍第一部分。
- 第一章节包含九个小节。
- 第一小节介绍为什么要使用AOP,处理code tangle 和code scatter的问题。
- 第二小节介绍使用AOP时,各个模块的结构。
- 第三小节剖析AOP,分为language specification和language implement。
- 第四小节介绍AOP的核心概念。重点
- 第五小节将AOP与CSS和SQL对比。
- 第六小节介绍AOP实现的技术,最流行的为AspectJ。
- 第七小节介绍可替代AOP的技术。
- 第八小节介绍AOP的优点和缺点。
- 第九小节总结。略。
- 第二章节包含八个小节。
- 第一小节演示HelloWorld示例。
- 第二小节介绍AOP的知识体系,最关键的一张图。
- 第三小节演示注解语法。
- 第四小节介绍weaving机制
- 第五小节介绍weaving底层。
- 第六小节介绍spring AOP方式。
- 第七小节介绍AspectJ的插件,ADJT。
- 第八小节总结。略。
- 第三章节包含七个小节
- 第一小节介绍join point概念。
- 第二小节介绍join point八种类型。
- 第三小节演示示例,方便理解join point。
- 第四小节介绍pointcut概念,基础,包含表达式的格式,特殊字符,逻辑运算符等。
- 第五小节介绍三种签名,类签名,方法&构造器签名,字段签名
- 第六小节介绍kinded和non-kinded,两种不同的pointcut类型。
- 第七小节总结,略。
- 第四章节包含六个小节
- 第一小节介绍Advice
- 第二小节比较Advice与Java的方法
- 第三小节介绍Advice的三种类型。
- 第四小节介绍使用non-kinded类型的pointcut收集上下文信息
- 第五小节介绍使用reflection API收集上下文信息。
- 第六小节总结,略。
- 第五章节包含七个小节
- 第一小节介绍给单个类添加成员
- 第二小节介绍修改单个类的结构,动态添加接口
- 第三小节介绍结合第一小节和第二小节,批量的添加成员
- 第四小节介绍动态添加注解
- 第五小节介绍添加编译警告,错误
- 第六小节介绍忽略必检异常
- 第七小节总结,略。
- 第六章节包含五个小节。
- 第一小节比较aspect与class
- 第二小节介绍aspect association
- 第三小节介绍aspect order,以及内部的advice order
- 第四小节介绍keyword privileged
- 第五小节总结,略。
- 第七章节包含八个小节
- 第八章节包含六个小节
- 第九章节包含七个小节。
3、链接