AspectJ Cookbook中文版
AspectJ Cookbook中文版
Russ Miles
程利剑 译
出版时间:2006年11月
页数:316
当面向对象编程(OO)首次出现时,它是一种启示。OO使开发人员能够创建更灵活、更健壮的软件。但随着时间的推移,应用程序变得更复杂,人们发现“传统的”OO体系结构在某些领域不能胜任。面向方面编程(AOP)通过进一步扩展OO方法,解决了这些问题。
许多开发人员都对AOP感兴趣 —— 特别是对AspectJ感兴趣,这个Java编程语言的开源扩展明确支持AOP方法。然而,尽管AspectJ纳入在Eclipse这个日益流行的Java开源IDE之内,但是找到一种实用、非理论的方式来学习这种语言及其他AOP工具和技术已经成为一个实际的问题。
迄今为止,本书提供了实用的解决方案以及大量的代码和秘诀,便于使用AOP的独特方法来解决日常设计和编程问题。本书包括以下内容:
● 初识AOP
● 集成AspectJ与Eclipse、Ant和Java命令行工具
● 将面向方面的应用程序部署为servlet、JSP、Web服务等
● 关于方面、切入点、通知以及核心AOP构造的每个方面的秘诀
● 在Java和J2EE设计模式实现中使用方面
● 使用AOP特有的设计模式,增强现有的Java应用程序
本书展示了为什么以及如何使用AOP技术来解决常见的Java开发问题。本书利用受欢迎的问题/解决方案/讨论格式,介绍了许多现实的示例,不仅仅从概念角度演示AOP;它是一个开发过程,让用户以一种即时、可见的方式受益。如果想了解AOP如何改变软件开发的方式,如何使用AspectJ使代码更加模块化,更易于开发、维护、演进和部署,那么本书确实很适合你。
  1. 前言
  2. 第1章 面向方面概述
  3. 面向方面简史
  4. AspectJ
  5. 面向方面的定义
  6. 在哪里找到更多信息
  7. 第2章 初识AspectJ
  8. 2.0 简介
  9. 2.1 安装AspectJ
  10. 2.2 开发一个简单的方面
  11. 2.3 编译一个方面和多个Java文件
  12. 2.4 织入方面到jar中
  13. 2.5 在加载时织入方面
  14. 2.6 生成Javadoc文档
  15. 2.7 使用Eclipse编译一个AspectJ项目
  16. 2.8 选择织入Eclipse内的构建中的方面
  17. 2.9 使用Ant构建一个AspectJ项目
  18. 第3章 部署AspectJ应用程序
  19. 3.0 简介
  20. 3.1 部署命令行AspectJ应用程序
  21. 3.2 将AspectJ应用程序部署为全包含的可执行JAR文件
  22. 3.3 部署使用AspectJ的Java Servlet
  23. 3.4 部署使用AspectJ的JSP
  24. 3.5 部署使用AspectJ的Axis Web服务
  25. 第4章 捕获方法上的连接点
  26. 4.0 简介
  27. 4.1 捕获方法调用
  28. 4.2 捕获方法调用上传递的参数值
  29. 4.3 捕获方法调用的目标
  30. 4.4 当执行一个方法时捕获它
  31. 4.5 在执行方法时捕获this引用的值
  32. 第5章 捕获异常处理上的连接点
  33. 5.0 简介
  34. 5.1 捕获何时捕捉异常
  35. 5.2 捕获抛出的异常
  36. 5.3 捕获处理异常的对象
  37. 第6章 捕获通知上的连接点
  38. 6.0 简介
  39. 6.1 捕获何时执行通知
  40. 6.2 排除作为通知执行结果的连接点
  41. 6.3 在发出通知时展示原始连接点
  42. 第7章 捕获类和对象构造上的连接点
  43. 7.0 简介
  44. 7.1 捕获对构造函数的调用
  45. 7.2 在执行构造函数时捕获它
  46. 7.3 捕获何时初始化对象
  47. 7.4 捕获何时将要初始化一个对象
  48. 7.5 捕获何时初始化类
  49. 第8章 捕获属性上的连接点
  50. 8.0 简介
  51. 8.1 捕获何时访问对象的属性
  52. 8.2 捕获访问的字段值
  53. 8.3 捕获何时修改对象的字段
  54. 8.4 在修改字段时捕获它的值
  55. 第9章 捕获程序作用域内的连接点
  56. 9.0 简介
  57. 9.1 捕获特定类中的所有连接点
  58. 9.2 捕获特定包中的所有连接点
  59. 9.3 捕获特定方法内的所有连接点
  60. 第10章 捕获基于控制流程的连接点
  61. 10.0 简介
  62. 10.1 捕获通过初始连接点开始的程序控制流程内的所有连接点
  63. 10.2 捕获程序控制流程内的所有连接点,不包括初始连接点
  64. 第11章 捕获基于对象类型的连接点
  65. 11.0 简介
  66. 11.1 捕获何时this引用是一个特定的类型
  67. 11.2 捕获何时连接点的目标对象是特定的类型
  68. 11.3 捕获何时连接点的参数是某个数字、类型和次序
  69. 第12章 捕获基于布尔或复合表达式的连接点
  70. 12.0 简介
  71. 12.1 捕获何时连接点上的运行时条件评估为true
  72. 12.2 使用逻辑AND(&&)结合切入点
  73. 12.3 使用逻辑OR(||)结合切入点
  74. 12.4 捕获所有未通过切入点声明指定的连接点
  75. 12.5 声明匿名切入点
  76. 12.6 重用切入点
  77. 第13章 定义通知
  78. 13.0 简介
  79. 13.1 访问类成员
  80. 13.2 访问连接点环境
  81. 13.3 在连接点之前执行通知
  82. 13.4 在连接点周围执行通知
  83. 13.5 在连接点之后无条件执行通知
  84. 13.6 仅在从连接点正常返回之后才执行通知
  85. 13.7 仅当连接点中引发了一个异常之后才执行通知
  86. 13.8 控制通知优先级
  87. 13.9 通知方面
  88. 第14章 定义方面实例化
  89. 14.0 简介
  90. 14.1 定义单件方面
  91. 14.2 在每个实例上定义一个方面
  92. 14.3 在每个控制流程上定义一个方面
  93. 第15章 定义方面的关系
  94. 15.0 简介
  95. 15.1 继承切入点定义
  96. 15.2 实现抽象切入点
  97. 15.3 把类继承进方面中
  98. 15.4 在类内部声明方面
  99. 第16章 增强类和编译器
  100. 16.0 简介
  101. 16.1 扩展现有的类
  102. 16.2 声明类之间的继承关系
  103. 16.3 使用方面实现接口
  104. 16.4 声明默认的接口实现
  105. 16.5 减轻异常的影响
  106. 16.6 扩展编译
  107. 第17章 实现创建型面向对象设计模式
  108. 17.0 简介
  109. 17.1 实现单件模式
  110. 17.2 实现原型模式
  111. 17.3 实现抽象工厂模式
  112. 17.4 实现工厂方法模式
  113. 17.5 实现生成器模式
  114. 第18章 实现结构型面向对象设计模式
  115. 18.0 简介
  116. 18.1 实现复合模式
  117. 18.2 实现享元模式
  118. 18.3 实现适配器模式
  119. 18.4 实现桥接模式
  120. 18.5 实现装饰模式
  121. 18.6 实现代理模式
  122. 第19章 实现行为型面向对象设计模式
  123. 19.0 简介
  124. 19.1 实现观察者模式
  125. 19.2 实现命令模式
  126. 19.3 实现迭代器模式
  127. 19.4 实现调停者模式
  128. 19.5 实现责任链模式
  129. 19.6 实现备忘录模式
  130. 19.7 实现策略模式
  131. 19.8 实现访问者模式
  132. 19.9 实现模板方法模式
  133. 19.10 实现状态模式
  134. 19.11 实现解释器模式
  135. 第20章 应用类和组件级方面
  136. 20.0 简介
  137. 20.1 验证传递给方法的参数
  138. 20.2 重写在构造函数调用上实例化的类
  139. 20.3 添加持久性到类中
  140. 20.4 应用模拟组件支持单元测试
  141. 第21章 应用应用程序级方面
  142. 21.0 简介
  143. 21.1 应用面向方面的跟踪
  144. 21.2 应用面向方面的日志记录
  145. 21.3 应用延迟加载
  146. 21.4 管理应用程序属性
  147. 第22章 应用企业级方面
  148. 22.0 简介
  149. 22.1 应用开发指导和规则
  150. 22.2 应用事务
  151. 22.3 应用资源池
  152. 22.4 使用RMI透明地远程访问类
  153. 22.5 应用安全策略
  154. 第23章 应用面向方面设计模式
  155. 23.0 简介
  156. 23.1 应用Cuckoo's Egg设计模式
  157. 23.2 应用Director设计模式
  158. 23.3 应用Border Control设计模式
  159. 23.4 应用策略设计模式
  160. 附录 AspectJ运行时API
书名:AspectJ Cookbook中文版
作者:Russ Miles
译者:程利剑 译
国内出版社:清华大学出版社
出版时间:2006年11月
页数:316
书号:7-302-14011-1
原版书出版商:O'Reilly Media
Russ Miles
 
Russ Miles是一位具有10年编程经验的开发人员,其涉足的语言包括:从Atari 800XL上的Basic到Mac OS X上的Mono。Russ是一位虔诚的Mac信徒,近年来,他专注于多平台环境下复杂的分布式系统开发,包括Windows、Linux、Unix和Mac OS X上多种风格的开发。Russ目前是General Dynamic UK Limited的一位高级技术专家,还是许多项目的顾问,包括从内部工具开发到国际标准出版物。只要有可能,Russ就会回到编程领域中来,并为多个开源项目做出了贡献。他还创立了他自己的一些开源项目。
在Russ意外地参加英国计算机协会的高级编程专家组的一次错误的会议时,他“发现”了面向方面编程。Russ无法记起他参加会议的实际目的,但是他很幸运,他参加了一次名为“Aspect-Oriented Programming Using AspectJ”的讲座,演讲人是IBM的Adrian Colyer。Russ对面向方面的潜力和AspectJ的成熟印象深刻,他关于软件体系结构的观点也发生了永久性的变化。他立即利用这种新方法,改变了他及其团队开发软件的方式。很快两年过去了,Russ仍在开发和倡导面向方面的方法。本书是Russ幸运地与AspectJ倡导者第一次碰面的结晶。
Russ持有格林威治大学计算机科学的优等学士学位,目前是牛津大学Kellogg学院的成员,他在这里完成了他的计算机科学硕士学位。他还为ONJava.com和java.net写了许多文章,并且是O'Reilly的技术顾问。
Russ is totally indebted to his fiancée, Corinne, for her
complete love and support while writing this book. Oh,
and he still can’t believe she said yes to getting married
next year, but I guess some guys have all the luck!
Russ has been writing for a long time and gets a huge
kick out of demystifying technologies, tools, and
techniques that shouldn’t have been so mystified in the
first place. After being a developer at various ranks for
many years, Russ now keeps his days (and sometimes
nights) busy by heading up a team of software
developers working on super secret services for the
music industry. He’s also just finished up his Oxford
Masters degree that only took him five years. He’s
looking forward to a bit of rest...but not for too long.
Russ is an avid guitar player and is relishing the spare
time to get back to his guitars. The only thing he’s
missing is Head First Guitar...c’mon Brett, you know
you want that one!
 
 
本书封面上的动物是一只长尾猴。长尾猴是一种小毛猴(其大小不会超过硕大的老鼠),居住在南美洲的热带和亚热带森林里。它们是树栖动物,并且异常敏捷。它们强有力的后腿、灵巧得像爪子一样的手以及特别长的尾巴,使得它们可以轻而易举地从一根树枝摆动到另一根树枝。
长尾猴不太挑食。它们偏爱树液(树越粗越好),但是它们也享用蜥蜴、青蛙、蜗牛、昆虫、水果和花蜜。
一群长尾猴(群居的长尾猴数量在8~20只左右)利用面部表情、身体动作和偶尔的尖叫声进行交流。它们还强烈依赖于嗅觉来鉴别彼此。长尾猴作为一个适应能力很强的物种,可以经受酷热和少林的环境。由于这种坚韧性,它们不会遭受严重的威胁,这与大多数其他的灵长类动物不同。