一、理解“面向切面编程”
面向切面编程(Aspect Oriented Programming, AOP)是软件编程思想发展到一定阶段的产物是对面向对象编茬lObject Oriented Progamming. 00P) 的有益补充。AOP -般适用于具有模适轻的场合,如访问控制。事务管理。性能监测等。
面向切面编程,简单 地说就是在不改变原程序的基础上为代码段增加新的功能,对代码段进行增强处理。它的设计思想来源于代理设计模式,下 面以图示的方式进行简单的说明。通常情况下调用对象的方法如图所示:
在代理模式中可以为该对象设置一个代理对象,代理对象为fun()提供一个代理方法, 当通过理对象的fun()方法调用原对象的fun()方法时,就可以在代理方法中添加新的功能,也就是所谓增强处理。增强的功能既可以插到原对象的fun()方法前面,也可以插到后面,如图所示:
在这种模式下,给编程人员的感觉是在原有代码乃至原业务流程都不修改的情况下,直接在业务流程中切入新代码,增加新功能,这就是所谓的面向切面编程。对面向切面编程有了感性认识以后。还需要了解它的一些基本概念。
切面(Aspet):一个模块化的横切逻辑(或称横切关注点),可能会横切多个对象,连接点(.om Pomn程序执行中的某个具体的执行点。如图5.8中原对象的tn()方法状
是一个连接点。
增强处理(Adicel: 切面在某个特定连接点上执行的代码逻辑,
知入庄光并走连接立的特征进行模述, 可以使用正则表达式, 增强处理和一个切人点表达式相关联,并在与这个切入点匹配的某个连接点上运行,
目标对象(Taget dijer): 被一个或多个切面增强的对象,ACP代理1AOP prory):由ACP框架所创建的对象,实现执行
织入(Wearing): 将增强处理连接到应用程序中的类型或对 增强处理方法等功能。
象上的过程。
方法正常执行完以后插入的增强处理为后置增强,此外还有欢有强处理先型如国品人防示分在理为后盟现以了为决之的、入的用情处理为的重话终增强等类型。 老增强, 异常抛出增强,最终增强等类型。
二、使用Spring AOP 实现日志输出
(1)在项目中添加Spring AOP 相关的 jar 文件。
(2)编写前置增强和后置增强实现日志功能。
(3)编写 Spring 配置文件,对业务方法进行增强处理。
(4)编写代码,获取带有增强处理的业务对象。
本章总结
Spring是一个轻量级的企业级框架,提供了loC容器、AOP实现、DAO/ORM 支持、Web集成等功能,目标是使现有的Java EE 技术更易用,并促进良好的编程习惯。
依赖注入让组件之间以配置文件的形式组织在一起,而不是以硬编码的方式耦合在一起。Spring配置文件是完成组装的主要场所,常用节点包括及其子节点。AOP的目的是从系统中分离出切面,独立于业务逻辑实现,在程序执行时织入程序中运行。面向切面编程主要关心两个问题,在什么位置, 执行什么功能。
配置AOP主要使用aop命名空间下的元素完成,可以实现定义切入点和织入增强等操作。