您的位置:首页 > 编程语言 > Java开发

Spring:AOP面向切面

2013-12-02 20:30 253 查看
AOP:面向切面,是一种编程思想,OOP的延续。将系统中非核心的业务提取出来,进行
单独处理。比如事务、日志和安全等。这个简单来说就是可以在一段程序之前或者之
后做一些事。

Spring 的AOP和IOC都是为了解决系统代码耦合度过高的问题。使代码重用度高、易于维

护。不过AOP和IOC并不是spring中特有的,只是spring把他们应用的更灵活方便

AOP(Aspect Oriented Programming),也就是面向方面编程的技术

1) Aspect切面(方面)

指的是共通业务处理,可以切入到多个目标对象,可多次使用

2) JoinPoint连接点

指的是切面组件在目标对象上作用的位置, 例如:方法上戒者发生异常。

3) Pointcut切入点

切入点是连接点的集合,采用表达式指定

4) Target Object目标对象

5) Advice通知

指的是切面组件在连接点上执行的劢作。 例如:在方法调用前、方法调用后、方法调用前后等。

6) AutoProxy劢态代理

采用了AOP乊后,容器返回的对象是代理对象。用户在使用时,由代理对象调用切面组件和 目标对象的功能。

a. 目标对象有接口采用JDK代理、

b. 目标对象没有接口采用CGLIB代理

<bean>
...

<aop:config> 
<aop:pointcut id="servicepointcut" 
expression="execution(* com.mummy.service.*.*(..))" /> 
<aop:aspect id="loggeraspect" ref="optlogger"> 
<aop:before method="logger" pointcut-ref="servicepointcut"/> 
</aop:aspect> 

</aop:config> 

</beans>

<aop:aspect > 用于配置切面

  id属性

  ref属性 用于关联切面的bean

<aop:pointcut/>用于设置切入点

  expression属性 类似于正则形式的表达式
execution()用于设置方法限定

  execution(* com.mummy.service.*.*(..))

表示不限定返回类型,限定指定tarena.service包下的所有方法,不限定参数类型

  <aop:before> 表示采用before这种通知,作用于pointcut和方法上
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Spring