《精通AspectJ》PDF下载

  • 购买积分:13 如何计算积分?
  • 作  者:Joseph D.Gradecki,Nicholas Lesiecki著;王欣轩,吴东升等译
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2005
  • ISBN:7302101612
  • 页数:372 页
图书介绍:本书介绍了如何通过模块化的面向方面的编程(AOP)来提高OO应用程序的性能。AspectJ是一门AOP语言,是对Java的无缝扩展。本书详细讲述了AOP和AspectJ原理,还介绍了如何运用AspectJ以及如何使用UML进行应用程序设计。

目录 1

第1章 AOP简介 1

1.1 OOP把我们带到了何处 1

1.2 AOP如何解决OOP问题 7

1.2.1 什么是AOP 8

1.2.2 AOP的开发过程 8

1.3 结束语 9

第2章 实现AOP 10

2.1 AOP语言剖析 10

2.1.1 AOP语言规范 11

2.1.2 AOP语言的实现 13

2.2 AspectJ 14

2.3 结束语 15

第3章 Aspectj的获取和安装 16

3.1 Aspectj的要求 16

3.2 下载AspectJ 16

3.3 安装AspectJP 17

3.3.1 设置PATH 19

3.3.2 设置CLASSPATH 22

3.4 安装测试 22

3.5 结束语 24

第4章 实现AspectJ 25

4.1 我们的首个AsPectj程序 25

4.1.1 首先编写组件 26

4.1.2 aspect代码 27

4.1.3 识别连接点 27

4.1.4 确定poincut 28

4.1.5 提供advice 28

4.1.6 增加一个aspect 29

4.1.7 编译和执行这个例子 29

4.2 添加一个新的关注点 30

4.2.1 返回文本的方法 30

4.2.2 把返回方法记入日志 31

4.2.3 一个新的首要关注点 34

4.3 暴露的上下文 36

4.4 类型间声明 37

4.5 aspect粒度 39

4.6 AspectJ编译器功能 40

4.6.1 指定源目录 40

4.6.2 用JAR进行织入 41

4.6.3 指定输出到一个JAR文件 42

4.6.4 创建和使用aspect库 43

4.6.5 阻止织入 43

4.6.6 使用渐进式编译 43

4.7 结束语 44

第5章 AspectJ连接点 45

5.1 动态连接点模型 45

5.2 AspectJ连接点 49

5.3 连接点签名 51

5.4 模式 52

5.4.1 类型名称模式 53

5.4.2 子类型模式 55

5.4.3 抛出模式 55

5.4.4 类型模式 56

5.5 反射 57

5.5.1 thisJoinPoint方法 57

5.5.2 thisJoinPointStaticPart方法 59

5.6 连接点示例 60

5.6.1 方法调用接收和执行 60

5.6.2 构造函数的调用接收/执行以及对象初始化 63

5.6.3 字段获取/设置 64

5.6.4 异常处理程序执行 66

5.6.5 类初始化 66

5.7 结束语 67

第6章 AspectJ pointcut 68

6.1 三个类的介绍 68

6.2 建立pointcut 71

6.3.1 指示符快速参考 73

6.3 使用指示符 73

6.3.2 使用逻辑运算符来创建指示符组合 74

6.4 组合po intcut 74

6.4.1 方法相关的pointcut 75

6.4.2 异常处理指示符 79

6.4.3 与域有关的指示符 81

6.4.4 基于状态的指示符 84

6.4.5 基于控制流的指示符 95

6.4.6 类初始化指示符 103

6.4.7 基于程序文本的指示符 104

6.4.8 基于动态属性的指示符 107

6.4.9 adviceexecution 108

6.4.10 preinitialization 109

6.4.11 处理接口 109

6.4.12 匿名pointcut 110

6.4.14 创建Factory对象 111

6.4.13 在类中使用aspect 111

6.4.15 捕获Java库调用 113

6.4.16 访问final属性 114

6.4.17 异常模式 115

6.5 结束语 115

第7章 advice 116

7.1 advice的定义 116

7.1.1 将信息添加到Systerm.ut.println()中 116

7.1.2 advice 117

7.1.3 形式定义 120

7.2 所有类型advice中普遍存在的问题 121

7.2.1 将上下文导入advice中 121

7.2.2 advice与异常 128

7.3 advice的类型:概述 130

7.4 before advice 130

7.5 after advice 136

7.5.1 after advice(无限制型) 136

7.5.2 after抛出 139

7.5.3 after retuming 144

7.6 around advice 146

7.6.1 对getProperty()调用进行替换 147

7.6.2 proceed() 150

7.7 advice的优先级 159

7.7.1 优先级的重要性 159

7.7.2 优先级的决定方法 160

7.7.3 运行期执行 162

7.7.4 伪优先级 163

7.8 结束语 164

第8章 类型间声明 165

8.1 类型间声明的简单例子 166

8.1.1 向类中添加方法 166

8.1.2 引入和advice 173

8.2 类型间成员:机制 176

8.2.1 类型间成员的类型 176

8.2.2 类型间声明的目标 178

8.2.3 访问控制 180

8.2.4 成员间的冲突 181

8.3 declare parents 184

8.3.1 添加一个简单的接口 184

8.3.2 declare parents:机制 185

8.4 带有具体成员的接口 187

8.4.1 重构Persistence解决方案 188

8.4.2 带有具体成员的接口:机制 191

8.4.3 带有具体成员的接口的可能性 195

8.5 声明优先级 200

8.5.1 一个优先级的例子 200

8.5.2 声明优先级:机制 201

8.5.3 迂回问题 204

8.5.4 优先级的效果 204

8.6 其他静态横切 204

8.6.2 自定义编译消息 205

8.6.1 静态可确定的pointcut 205

8.6.3 软化异常 208

8.7 结束语 213

第9章 aspect 214

9.1 aspect结构 214

9.2 aspect扩展 218

9.2.1 构建抽象aspect 218

9.2.2 从类和接口中继承 223

9.3 aspect实例化和联合 224

9.3.1 单独的aspect 224

9.3.2 基于每对象的aspect 225

9.3.3 基于每控制流的aspect 227

9.4 aspect支配和优先级 228

9.5 访问aspect对象 229

9.6 aspect特权 230

9.7 结束语 232

10.1 采用AspectJ 233

第10章 ASpectJ的开发应用 233

10.1.1 采用AspectJ的缘由 234

10.1.2 如何将AspectJ应用到过程中 234

10.1.3 前期开发工作 235

10.1.4 取消AspectJ 235

10.2 开发使用 235

10.2.1 跟踪 235

10.2.2 条件检查 237

10.3 生产aspect 238

10.3.1 日志和计时 238

10.3.2 授权 240

10.4 结束语 241

第11章 使用ASpectJ工具 242

11.1 AspectJ编译器选项 242

11.2 aspect结构浏览器 243

11.3.1 JBuilder 247

11.3 使用AspectJ IDE扩展 247

11.3.2 Forte与NetBeans 253

11.3.3 Emacs 255

11.3.4 Eclipse 257

11.4 Ant 266

11.5 调试AspectJ 267

11.5.1 ajdb命令行指南 268

11.5.2 ajdb GUI指南 270

11.6 使用ajdoc 272

11.7 结束语 274

第12章 错误处理和一般问题 275

12.1 编译错误 275

12.1.1 错误的编译器 275

12.1.2 无法找到aspectjtoolsjar文件 276

12.1.3 内存溢出错误 277

12.1.4 错误的JSDK 277

12.2 扩展运行时错误处理 278

12.1.5 没有Java编译器 278

12.2.1 堆栈溢出 279

12.2.2 连接点不匹配 279

12.3 异常抛出与捕获 283

12.4 使用TraceJoinPointsjava 285

12.5 call指示符与execution指示符的区别 290

12.5.1 this()和target()的使用 291

12.5.2 within和withincode的效果 291

12.6 结束语 292

第13章 面向aspect例子:模式与重用 293

13.1 可重用持久性 293

13.1.1 PersistenceProtocol aspect 294

13.1.2 通过subaspect应用PersistenceProtocol 296

13.2 方法缓存 302

13.3 将模式标记为aspect 308

13.3.1 往aspect的API中添加无效特性 308

13.3.2 Observer模式 309

13.3.3 在AspectJ中重用Observer 310

13.4 面向方面的设计 319

13.5 结束语 320

第14章 ASpectJ在现实中的应用 321

14.1 添加特性 321

14.1.1 初始应用程序 321

14.1.2 待添加的特性 322

14.1.3 当前设计 322

14.1.4 软件的可继承性 324

14.1.5 编写aspect和源代码 324

14.1.6 测试 330

14.1.7 文档 330

14.1.8 结论 332

14.2 重构网络结构 333

14.2.1 logging 333

14.2.2 计时 347

14.2.3 检查点 348

14.3 结束语 350

附录A AspectJ API 351

A.1 接口层次关系 351

A.2 类层次关系 351

A.3 AspectJ API说明 351

A.3.1 接口:JoinPoint 352

A.3.2 接口:JoinPointStaticPart 355

A.3.3 接口:Signature 355

A.3.4 接口:CatchClauseSignature 357

A.3.5 接口:MemberSignature 358

A.3.6 接口:CodeSignature 358

A.3.7 接口:AdviceSignature 358

A.3.8 接口:InitializerSignature 359

A.3.9 接口:MethodSignature 359

A.3.10 接口:FieldSignature 360

A.3.11 接口:SourceLocation 360

A.3.12 类:SoftException 361

A.3.13 类:NoAspectBoundException 362

附录B 有帮助的Web站点 363

B.1 概述性站点 363

B.2 人物 363

B.3 自然教程 363

B.4 论文 364

B.6 软件开发和系统 365

B.7 事件 365

B.5 其他范例 365

B.8 大学 366

附录C 其他AOP语言绑定 367

C.1 AspectR 367

C.1.1 说明 367

C.1.2 要求 367

C.1.3 例子代码 367

C.3.1 说明 368

C.3 Apostle 368

C.2.1 说明 368

C.2.2 要求 368

C.2 AspectS 368

C.3.2 要求 369

C.4 AspectC 369

C.4.1 说明 369

C.4.2 要求 369

C.4.3 例子代码 369

C.5 AspectC++ 370

C.5.1 说明 370

C.5.2 要求 370

C.5.3 例子代码 370

C.6 Pythius 371

C.6.1 说明 371

C.6.2 要求 371

C.6.3 例子代码 371