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

Spring AOP小例证

2012-10-12 
Spring AOP小例子PS: 要注明一下,这个是转载滴这里给一个完整的例子,以帮助初学者更好地理解, 你们可以先

Spring AOP小例子
PS: 要注明一下,这个是转载滴

这里给一个完整的例子,以帮助初学者更好地理解,
你们可以先不必理会上面的概念,等运行这个例子后,再慢慢地做照着理解。

我使用的是Spring 2.0 的AOP, 它引入了一种更加简单并且更强大的方式来定义切面。

马上开始吧:

首先建一个普通Java项目:com.longthsoft.learn.spring

把 spring.jar, commons-logging.jar, cglib-nodep-...jar, aspectjweaver.jar, aspectjrt.jar  放到 Build Path 下.

以止 lib 除了 spring 外, 其他的都可以在 spring 下载包的 lib 中找到

下面编码开始:

让我们先写两个简单的类:

package com.longthsoft.learn.spring.models;    public class A {      public void sayHello() {          System.out.println("Hello, I'm a");      }  }  


package com.longthsoft.learn.spring.models;    public class B {      public void sayHi() {          System.out.println("Hi, I'm b");      }  }  

没什么实际的东西, 只是小A和小B在打招呼

接下来把他们交给Spring吧(有点残忍)。
<?xml version="1.0" encoding="UTF-8"?>  <beans xmlns="http://www.springframework.org/schema/beans"      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"      xmlns:aop="http://www.springframework.org/schema/aop"      xsi:schemaLocation="          http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd          http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd">            <bean id="a" />      <bean id="b" />  </beans>

接下来写个Boot
package com.longthsoft.learn.spring;    import org.springframework.context.ApplicationContext;  import org.springframework.context.support.ClassPathXmlApplicationContext;    import com.longthsoft.learn.spring.models.A;  import com.longthsoft.learn.spring.models.B;    public final class Boot {        public static void main(String[] args) {          ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");          A a = (A) ctx.getBean("a");          a.sayHello();                    B b = (B) ctx.getBean("b");          b.sayHi();      }    }    

嘿, 这里的运行结果不帖了, 大家脑子里闪过即可。

圣诞到了, 小A小B 介绍完自己之后,也应该说句 "Merry Christmas"

Spring 说, 既然你们交给我, 这等 routine 就不用再麻烦了, 直接一并处理掉。

于是:

package com.longthsoft.learn.spring;    import org.aspectj.lang.annotation.AfterReturning;  import org.aspectj.lang.annotation.Aspect;  import org.aspectj.lang.annotation.Pointcut;    @Aspect  public class SimpleAspect {        @Pointcut("execution(* com.longthsoft.learn.spring.models.*.say*())")      public void simplePointcut() { }            @AfterReturning(pointcut="simplePointcut()")      public void simpleAdvice() {          System.out.println("Merry Christmas");      }  }

然后修改一下配置文件

<?xml version="1.0" encoding="UTF-8"?>  <beans xmlns="http://www.springframework.org/schema/beans"      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"      xmlns:aop="http://www.springframework.org/schema/aop"      xsi:schemaLocation="          http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd          http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd">            <aop:aspectj-autoproxy />            <bean id="a" />      <bean id="b" />            <bean id="simpleAspect" />  </beans> 

OK, 运行一下:

Hello, I'm a
Merry Christmas
Hi, I'm b
Merry Christmas

热点排行