Spring AOP编程

来源:互联网 发布:简易财务记账软件 编辑:程序博客网 时间:2024/06/16 01:24

一.什么是AOP

AOP(Aspect Orient Programming),也就是面向切面编程。可以这样理解,面向对象编程(OOP)是从静态角度考虑程序结构,面向切面编程(AOP)是从动态角度考虑程序运行过程。

二.AOP的作用

常常通过 AOP 来处理一些具有横切性质的系统性服务,如事物管理、安全检查、缓存、对象池管理等,AOP 已经成为一种非常常用的解决方案。

三.AOP名词解释

  • 切面(Aspect)
    需要加入到业务中的需求(日志,事物管理)

  • 通知(Advice)
    切面中的每一个方法

  • 目标(Target)
    被通知的对象

  • 代理(Proxy)
    向目标对象通知之后创建的对象

  • 连接点(JointPoint)
    程序执行的特定位置,方法执行的前后

  • 切点(PointCut)
    通知织入目标方法的特定连接点,execution表达式里面的方法

四.AOP在spring中的实现

1.引入jar包

com.springsource.org.aopalliance-1.0.0.jar
com.springsource.org.aspectj.weaver-1.6.8.RELEASE.jar
spring-aop-4.0.6.RELEASE.jar
spring-aspects-4.0.6.RELEASE.jar

2.在配置文件中加入aop命名空间

3.配置bean(target,aspect)

4.配置AOP

<aop:config>  <!-- 切点表达式-->  <aop:pointcut id="XX" expression="execution(* XX.XX.*(..))">  <!-- 配置切面及通知-->  <aop:aspect ref="XX">    <aop:before method="" ppoint-ref="" />    <aop:after method="" point-ref="" />  </aop:aspect></aop:config>

AOP基于注解方式

1.在配置文件中加入如下配置

<aop:aspectj-autoproxy />

2.定义切面

@Component: 类加入ioc容器中@Aspect: 指定这个类是一个切面@Order: 指定切面执行的优先级,越小优先级越高在类的方法中定义@Before("execution(* 包.类.方法(..))"): 前置通知@After: 后置通知@Around: 环绕通知@AfterReturning(value="execution(), returning="result"): 返回通知,在方法正常结束后执行,可以访问方法返回值public void end(Object result){   System.out.println("end whit"+result);  }@AfterThrowing(value="execution()",throwing="e"):异常通知,目标方法抛出异常时候执行。

注:可以定义一个切点,不需要在每个通知中写切点表达式
@Pointcut(“executino(* XX.XX.*(. .))”)
public void pointcut(){}

0 0
原创粉丝点击