首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

黄晓童SPRING学习札记:对AOP的初步理解

2012-09-21 
黄晓童SPRING学习笔记:对AOP的初步理解Spring的定义对DI的初步理解对AOP的初步理解对DI的深入探究对AOP的

黄晓童SPRING学习笔记:对AOP的初步理解

Spring的定义
对DI的初步理解
对AOP的初步理解
对DI的深入探究
对AOP的深入探究
Spring的事务管理
Spring MVC

接下来阐述一下我对AOP的理解,还是回到之前那个骑士和寻找圣杯的场景来。现在场景稍有改变,在骑士寻找圣杯的时候,要有一个诗人陪伴他,以朗诵诗歌的形式为他歌功颂德。按照以往的方式,最容易想到的一个方法就是:定义一个诗人的类,里面包含唱歌的方法,然后在骑士类里面有一个诗人类的实例,并在执行任务方法里调用诗人的唱歌方法。代码如下:

public class ShiRen{ public void singBefore() {  System.out.println(“sing  before”); } public void singAfter() {  System.out.println(“sing  after”); }}

?

上面的是新定义的诗人类,下面我们将修改前面的骑士类:

Public  class  QiShi  implement  RenLei{ private  RenWu  renWu; public void setRenWu (RenWu  renWu ) {  this.renwu = renWu ; }  private  ShiRen  shiRen; public void setShiRen (ShiRen  shiRen ) {  this. shiRen = shiRen; }  public  ShengBei  zhiXingRenWu ()  {  shiRen.singBefore(); ShengBei  s  =  renWu. zhiXing (); shiRen.singAfter(); return  s; }}

?
?代码修改完毕,看上去没什么问题了。可是仔细一看就会发现这里面有个严重的问题:每次骑士寻找圣杯的时候,他都需要先停下来告诉诗人去朗诵诗歌,如果他忘记了去告诉诗人,诗人就不会去朗诵诗歌了。其实,诗人朗诵诗歌这件事骑士是不关心的。骑士要做的就是寻找圣杯,提醒诗人朗诵诗歌这件事已经超出了他的职责范围。
?通过上面的场景,我们已经发现了传统方法暴露出来的问题。这时我们就需要AOP技术的帮助。AOP用来帮助业务的分离,服务模块化,从而使这些组件更加专注于自身的业务。

下面我们在xml配置文件中追加如下代码段:

<bean id="shiRen"  expression="execution(* *. zhiXingRenWu(..))" /> <aop:before  method="singBefore"  pointcut-ref="pointcut" /> <aop:after-returning  method="singAfter"  pointcut-ref="pointcut" /> </aop:aspect></aop:config>

?

然后,我们将骑士类再改回原来的样子就行了。在这里,我们将诗人声明为一个切面。至于配置文件里的具体细节后面会提到。

热点排行