Spring-AOP

定义切点

Spring中表示方式切点常用的有两种方式:1.使用正则表达式 2.使用AspectJ表达式
使用org.springframework.aop.support.JdkRegexpMethodPointcut来定义正则表达式切点
<pre>&lt;bean id="sleepPointcut" class="org.springframework.aop.support.JdkRegexpMethodPointcut"&gt;
 &lt;property name="pattern" value=".*sleep"/&gt;
&lt;/bean&gt;</pre>
上面示例中pattern属性指定了正则表达式,它匹配所有的sleep方法


定义顾问

把通知和切点结合起来:
org.springframework.aop.support.DefaultPointcutAdvisor
<pre>&lt;bean id="sleepHelperAdvisor" class="org.springframework.aop.support.DefaultPointcutAdvisor"&gt;
 &lt;property name="advice" ref="sleepHelper"/&gt;
 &lt;property name="pointcut" ref="sleepPointcut"/&gt;
&lt;/bean&gt;</pre>
<h2>定义代理对象</h2>
<pre>&lt;bean id="humanProxy" class="org.springframework.aop.framework.ProxyFactoryBean"&gt;
     &lt;property name="target" ref="human"/&gt;
     &lt;property name="interceptorNames" value="sleepHelperAdvisor" /&gt;
     &lt;property name="proxyInterfaces" value="test.spring.aop.bean.Sleepable" /&gt;
&lt;/bean&gt;

</pre>
Spring还提供了一种自动代理的功能,不用显示定义代理对象,能让通知者和业务对象自动匹配,如下:
<pre>&lt;bean class="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator"/&gt;</pre>
http://blog.csdn.net/udbnny/article/details/5870076
http://www.jb51.net/article/83173.htm


AOP概念

AOP是Aspect Oriented Programming的缩写,意思是面向切面(方面)编程。
主要的功能有日志记录,性能统计,安全控制,事务处理,异常处理等,主要意图是<span style="color: #ff0000;">将功能代码从业务逻辑代码中划分出来</span>,通过对这些行为的分离,我们希望可以将它们独立到非主导业务逻辑的方法中,进而改变这些行为的时候不影响主业务逻辑的代码。
AOP是其实是通过<span style="color: #ff0000;">动态代理模式</span>来实现业务逻辑的插入,使开发者在开发时不用关注其他与业务无关的点,通过代理的方式做到了插拔式操作。


AOP,OOP区别概念

  •      AOP是OOP的补充
  •      OOP编程将程序分解成各个层次的对象,AOP将程序运行过程分解成各个切面。
  •      AOP从程序运行角度考虑程序的结构,提取业务处理过程的切面
  •      OOP是静态的抽象,AOP是动态的抽象
  •      AOP是对应用执行过程中的步骤进行抽象,从而获得步骤之间的逻辑划分。

AOP框架具有的两个特征:
1.各个步骤之间的良好隔离性
2.源代码无关性


IOC概念

IoC,(Inverse of Control)控制反转,其包含两个内容:其一是控制,其二是反转。在程序中,被调用类的选择控制权从调用它的类中移除,转交给第三方裁决。这个第三方比如Spring容器。IoC另解,依赖注入(Dependency Injection),调用类对被调用类的依赖关系由第三方注入。
IoC其实是遵循了软件设计理念的依赖倒转原则,面向对象的设计就是为了实现软件的更好的复用性和扩展性,我们就必须降低我们每个pojo的依赖关系,也就是解耦,耦合度低了,才能更好的重用和扩展。
IoC中用到了工厂模式
若不是所有操作都要求有相同的效应,则要考虑是否使用切面。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值