spring-aop示例

王朝学院·作者佚名  2016-08-27
窄屏简体版  字體: 小  |  中  |  大  |  超大  

具体案例放在github上,主要是jar包在上面

https://github.com/guoyansi/sPRing-aop-example

knights.xml

<?xml version="1.0" encoding="UTF-8"?><beansxmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:p="http://www.springframework.org/schema/p"xmlns:context="http://www.springframework.org/schema/context"xmlns:mvc="http://www.springframework.org/schema/mvc"xmlns:tx="http://www.springframework.org/schema/tx"xmlns:aop="http://www.springframework.org/schema/aop"xsi:schemaLocation="

http://www.springframework.org/schema/beans

http://www.springframework.org/schema/beans/spring-beans.xsd

http://www.springframework.org/schema/context

http://www.springframework.org/schema/context/spring-context.xsd

http://www.springframework.org/schema/mvc

http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd

http://www.springframework.org/schema/tx

http://www.springframework.org/schema/tx/spring-tx.xsd

http://www.springframework.org/schema/aop

http://www.springframework.org/schema/aop/spring-aop.xsd"><beanid="knight"class="p1.BraveKnight"><constructor-argref="quest"/></bean><beanid="quest"class="p1.SlayDragonQuest"></bean><beanid="minstrel"class="p1.Minstrel"></bean><aop:config><aop:aspectref="minstrel"><aop:pointcutid="embark"expression="execution(* *.embarkOnQuest(..))"/><aop:beforepointcut-ref="embark"method="singBeforeQuest"/><aop:afterpointcut-ref="embark"method="singAfterQuest"/></aop:aspect></aop:config></beans>

IQuest.java

packagep1;/*** 探险

**/publicinterfaceIQuest {voidembark();

}

IKnight.java

packagep1;publicinterfaceIKnight {voidembarkOnQuest();

}

BraveKnight.java

packagep1;/*** 骑士

**/publicclass

BraveKnightimplementsIKnight{privateIQuest quest;public

BraveKnight(IQuest quest){this.quest=quest;

}

@OverridepublicvoidembarkOnQuest (){

quest.embark();

}

}

SlayDragonQuest.java

packagep1;publicclassSlayDragonQuestimplementsIQuest{

@Overridepublicvoidembark() {

System.out.println("SlayDragonQuest的embark......");

}

}

Minstrel.java

packagep1;publicclassMinstrel {publicvoidsingBeforeQuest(){

System.out.println("探险之前...");

}publicvoidsingAfterQuest(){

System.out.println("探险之后......");

}

}

packagep1;importorg.springframework.context.applicationContext;importorg.springframework.context.support.ClassPathXmlApplicationContext;publicclassRun {publicstaticvoidmain(String[] args) {

ApplicationContext context=newClassPathXmlApplicationContext("classpath*:knights.xml");

IKnight knight=(IKnight)context.getBean("knight");

knight.embarkOnQuest();

}

}

执行run的结果:

上面是一个完整的例子.如果没有commons-logging.jar

控制台上的那些红色字样就不会输出,还会出现异常.

如果没有aopalliance.jar:

nested exception is java.lang.NoClassDefFoundError: org/aopalliance/aop/Advice

如果没有aspectjweaver.jar

nested exception is java.lang.NoClassDefFoundError: org/aspectj/weaver/reflect/ReflectionWorld$ReflectionWorldException

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航