Java EE企业级项目开发JavaEE单元6 任务2 勤查询设计

上传人:公**** 文档编号:579289569 上传时间:2024-08-26 格式:PPT 页数:41 大小:1.40MB
返回 下载 相关 举报
Java EE企业级项目开发JavaEE单元6 任务2 勤查询设计_第1页
第1页 / 共41页
Java EE企业级项目开发JavaEE单元6 任务2 勤查询设计_第2页
第2页 / 共41页
Java EE企业级项目开发JavaEE单元6 任务2 勤查询设计_第3页
第3页 / 共41页
Java EE企业级项目开发JavaEE单元6 任务2 勤查询设计_第4页
第4页 / 共41页
Java EE企业级项目开发JavaEE单元6 任务2 勤查询设计_第5页
第5页 / 共41页
点击查看更多>>
资源描述

《Java EE企业级项目开发JavaEE单元6 任务2 勤查询设计》由会员分享,可在线阅读,更多相关《Java EE企业级项目开发JavaEE单元6 任务2 勤查询设计(41页珍藏版)》请在金锄头文库上搜索。

1、Struts2+Hibernate+SpringJavaEE企业级项目开发单元六考勤管理任务2考勤查询设计蛋篙越版候耽扭荤拨坍郁镍兔祈绽薛河榔唬逊陌届偷恫罢岂叙迅苫杂尾削Java EE企业级项目开发JavaEE-单元6 任务2 勤查询设计Java EE企业级项目开发JavaEE-单元6 任务2 勤查询设计1任务简介任务简介2任务分析任务分析3相关支撑知识相关支撑知识4任务小结任务小结目录页第1页任务2考勤查询设计报威润陇竿涉陪费该吓吸股贪微唇镁可芜冒黔匆闪釜跳撑脚科掸丫皇词憎Java EE企业级项目开发JavaEE-单元6 任务2 勤查询设计Java EE企业级项目开发JavaEE-单元6 任

2、务2 勤查询设计过渡页第2页过渡页任务简介捉精昭堡限环锦冠骂藻转札汇斜迎斑蠕倔拓自净擎歹往翅谆牟阵滥讯笋掇Java EE企业级项目开发JavaEE-单元6 任务2 勤查询设计Java EE企业级项目开发JavaEE-单元6 任务2 勤查询设计任务2考勤查询设计任务简介本本任务以考勤查询功能设计与实现为依托,主要内容:p学习SpringAOP中的Pointcut与Advisor;p理解AOP基于XMLSchema的配置实现;p应用XMLSchema配置设计并实现考勤查询子模块。第3页邵哨怕因牙踞牟夷拄吵典瞪贤侣舞有殆澄滑夸鞋虏懈康乃红吸镍贸学友揣Java EE企业级项目开发JavaEE-单元6

3、任务2 勤查询设计Java EE企业级项目开发JavaEE-单元6 任务2 勤查询设计过渡页第4页过渡页任务分析硫普撑答妹竣果纫掣医末童涟皑豢鸭捌往隧惮厩寂窍搜平周熟坡等跌竣瓢Java EE企业级项目开发JavaEE-单元6 任务2 勤查询设计Java EE企业级项目开发JavaEE-单元6 任务2 勤查询设计任务2考勤查询设计任务分析pSpring中的Pointcut:l定义了Advice的应用时机,相对任务1中的四种Advice,PointCut可以定义更细致的植入时机。l分为静态Pointcut、动态Pointcut和用户自定义Pointcut三种。p本任务重点:l分析静态Pointcu

4、t与动态Pointcut。l基于XMLSchema的配置实现方式可以简化AOP的使用,无需编写代理类,可以重用Pointcut。第5页农梆羔鸦存蜘狭迄梦宁境傻雅泄顺屠耶蚁蔑霍箩镍椅齐也瘤恼欣码帮幼萨Java EE企业级项目开发JavaEE-单元6 任务2 勤查询设计Java EE企业级项目开发JavaEE-单元6 任务2 勤查询设计任务2考勤查询设计任务分析p考勤查询:l根据用户名、开始日期、结束日期查询符合条件的考勤记录。l考勤查询同时记录查询日志信息,查询日志信息包括:用户的ID、IP地址、查询时间等。l查询日志应用基于XMLSchema配置,在Spring配置文件中配置标签,配置文件中没

5、有设置代理对象,Spring自动设置代理对象并调用对应的方法是应用Advice。第6页佰篙莽罗奋培算韭孝老皖呀揭扁兴棒匙苑壶茧碗腆杯涉吝膀东凡削见拌焰Java EE企业级项目开发JavaEE-单元6 任务2 勤查询设计Java EE企业级项目开发JavaEE-单元6 任务2 勤查询设计过渡页第7页过渡页相关支撑知识容谦犀臭腾晰代翰咏函廉帖挎晾壤吸铸号庞纸骗墩径仇尸充冕纪攒胎髓耗Java EE企业级项目开发JavaEE-单元6 任务2 勤查询设计Java EE企业级项目开发JavaEE-单元6 任务2 勤查询设计相关支撑知识pPointcut即切入点,用于配置切面的切入位置:lSpring切入点

6、的粒度是方法级,因此在SpringAOP中Pointcut的作用是配置哪些类中哪些方法在定义的切入点之内、哪些方法应该被过滤排除。lSpring的Pointcut分为三种:静态Pointcut:需要考虑类名、方法名动态Pointcut:除此之外,还要考虑方法的参数,以便在运行时可以动态的确定切入点的位置;用户自定义Pointcut。第8页一Pointcut、Advisior任务2考勤查询设计殃撰梭闪禁墙庄劝寿讼攻煤穗脉婿入谊讨国蛾络恳场描霸咯酬惦诲刘梨纳Java EE企业级项目开发JavaEE-单元6 任务2 勤查询设计Java EE企业级项目开发JavaEE-单元6 任务2 勤查询设计相关支

7、撑知识pSpring中一个advisor是一个通知对象和与之关联的切入点表达式的切面。除了引入这种特殊形式,任何advisor都可以和任何通知一起工作。porg.springframework.aop.support.DefaultPointcutAdvisor是最常用的advisor类。l例如,可以和MethodInterceptor,BeforeAdvice或者ThrowsAdvice一起使用。第9页一Pointcut、Advisior任务2考勤查询设计届恋陇浙刘靶墅粪笺踊囊台述恍母惧郭芳乒箭柔杀污蠢砰氢逊皂陈朴紊凡Java EE企业级项目开发JavaEE-单元6 任务2 勤查询设计Jav

8、a EE企业级项目开发JavaEE-单元6 任务2 勤查询设计相关支撑知识p静态Pointcut:l可以根据类和方法的签名,来判定那些类的哪些方法在定义的切入点之内、哪些应该被过滤排除。p静态Pointcut的实现类:lNameMatchMethodPointcut:只能对方法名进行判别的静态Pointcut实现类;lJdkRegexpMethodPointcut:使用JDK中定义的正则表达式对方法名进行匹配的静态Pointcut实现类;lStaticMethodMatcherPointcut:抽象的静态Pointcut,不能被实例化,可以扩展该类来实现自定义的切入点。第10页静态Pointc

9、ut1 1一Pointcut、Advisior任务2考勤查询设计偶哄硝触况孙右迹嚣昼枢誉奥复碎副锰赏九戚视鉴屁照痹晤滤鸟阑倘缩拒Java EE企业级项目开发JavaEE-单元6 任务2 勤查询设计Java EE企业级项目开发JavaEE-单元6 任务2 勤查询设计相关支撑知识第11页静态Pointcut1 1一Pointcut、Advisior任务2考勤查询设计(1)NameMatchMethodPointcutl只能对方法名进行判别的静态Pointcut实现类 pos* start pos*表示包含所有以pos开始的方法(大小写敏感)。讼饺羽势烤抄菌六垒懂芭胎针钵谁昼粪恭脱瞬衣廉酒盟诣抓偷冉

10、辖茅腺谈Java EE企业级项目开发JavaEE-单元6 任务2 勤查询设计Java EE企业级项目开发JavaEE-单元6 任务2 勤查询设计相关支撑知识第12页静态Pointcut1 1一Pointcut、Advisior任务2考勤查询设计(1)NameMatchMethodPointcutl使用NameMatchMethodPointcut匹配foo(),foo(int)和bar()方法。【例6-5】NameMatchMethodPointcut使用实例接口:INameBean.javapublic interface INameBean public void foo(); publi

11、c void foo(int x);public void bar(); public void yup();接口实现类:NameBean.javapublic class NameBean implements INameBean public void foo() System.out.println(foo); public void foo(int x) System.out.println(foo + x); public void bar() System.out.println(bar); public void yup() System.out.println(yup); 纠肘

12、堂个铸恨种嗽悔各钓胞缠皇弊篮沙希岭拖譬虫怔镜萨习侩此件申宠遗Java EE企业级项目开发JavaEE-单元6 任务2 勤查询设计Java EE企业级项目开发JavaEE-单元6 任务2 勤查询设计相关支撑知识第13页静态Pointcut1 1一Pointcut、Advisior任务2考勤查询设计(1)NameMatchMethodPointcutl使用NameMatchMethodPointcut匹配foo(),foo(int)和bar()方法。【例6-5】NameMatchMethodPointcut使用实例修改配置文件 foo bar nameAdvisor 恰拌线聪愉茎鸦蔼铅歇戏羽晨趟尔

13、离糕而召龙呀贿力嗓钟福臻橇窗侍洲谨Java EE企业级项目开发JavaEE-单元6 任务2 勤查询设计Java EE企业级项目开发JavaEE-单元6 任务2 勤查询设计相关支撑知识第14页静态Pointcut1 1一Pointcut、Advisior任务2考勤查询设计(1)NameMatchMethodPointcutl使用NameMatchMethodPointcut匹配foo(),foo(int)和bar()方法。【例6-5】NameMatchMethodPointcut使用实例测试类:NamePointcutExample.javapublic class NamePointcutEx

14、ample public static void main(String args) ApplicationContext context = new ClassPathXmlApplicationContext(applicationContext.xml);INameBean nameBeanProxy=(INameBean)context.getBean(nameBeanProxy);nameBeanProxy.foo();nameBeanProxy.foo(100);nameBeanProxy.bar();nameBeanProxy.yup(); 颊循穿饵闰何值坤肃蜜文宜愁虚拯装帜襟感

15、泽镜困毛旷诬位朵儿棠苯号鞭Java EE企业级项目开发JavaEE-单元6 任务2 勤查询设计Java EE企业级项目开发JavaEE-单元6 任务2 勤查询设计相关支撑知识第15页静态Pointcut1 1一Pointcut、Advisior任务2考勤查询设计(1)NameMatchMethodPointcutl使用NameMatchMethodPointcut匹配foo(),foo(int)和bar()方法。【例6-5】NameMatchMethodPointcut使用实例运行结果要淖矣谐钨褂诅铸流敖镐案盖娥论三风菲琼钡兄闹纶嘱昆伊剧怜澈咎军坍Java EE企业级项目开发JavaEE-单元

16、6 任务2 勤查询设计Java EE企业级项目开发JavaEE-单元6 任务2 勤查询设计相关支撑知识第16页静态Pointcut1 1一Pointcut、Advisior任务2考勤查询设计(2)JdkRegexpMethodPointcutl使用JDK中定义的正则表达式对方法名进行匹配的静态Pointcut。 .*ost .*tart .*tart .*ost正则表达式,所有以ost结尾的方法都匹配。赘径侵扣屿密甘腺鹿郎魏壬激季林疡夷浅烘捡筛轮喉洲描矮萍夸束哉酣独Java EE企业级项目开发JavaEE-单元6 任务2 勤查询设计Java EE企业级项目开发JavaEE-单元6 任务2 勤查

17、询设计相关支撑知识第17页静态Pointcut1 1一Pointcut、Advisior任务2考勤查询设计(2)JdkRegexpMethodPointcutppatterns属性:l一个java.lang.Sring类型的数组,表示数组中所有和定义的正则表达式匹配的方法都包含在定义的切入点内。pexcludedPatterns属性:l与patterns属性相反,表示被排除于切入点范围的方法。p和NameMatchMethodPointcut一样,也可以用ClassFilter类型的classFilter属性来定义类过滤器。舟项易句照闲肖断齿锈奇颊醉啪需侵铂容杯霄兰洱聂在先纶和蔚嫉选堡硬Jav

18、a EE企业级项目开发JavaEE-单元6 任务2 勤查询设计Java EE企业级项目开发JavaEE-单元6 任务2 勤查询设计相关支撑知识第18页静态Pointcut1 1一Pointcut、Advisior任务2考勤查询设计(2)JdkRegexpMethodPointcutpublic class People public void speak() / 讲话 System.out.println(Hello,我是People!); public void Running() / 跑步 System.out.println(我在跑跑逃); public void Loving() /

19、恋爱 System.out.println(我在恋爱别来打搅我!); public void died() / 死亡 System.out.println(完了,死了); 【例6-6】JdkRegexpMethodPointcut使用实例创建目标类:People.java执菱姥蔓吟还蔷豹狰牌稽钾角柬浑颐奎敖碌饭中瘟沸散锋勃孟誉燥舰忿师Java EE企业级项目开发JavaEE-单元6 任务2 勤查询设计Java EE企业级项目开发JavaEE-单元6 任务2 勤查询设计相关支撑知识第19页静态Pointcut1 1一Pointcut、Advisior任务2考勤查询设计(2)JdkRegexpMe

20、thodPointcutpublic class LogerPeople implements MethodBeforeAdvice private static final Log log = LogFactory.getLog(LogerPeople.class); public void before(Method method, Object args, Object target) throws Throwable System.out.println(target.getClass().getSimpleName() + 正在 + method.getName()+ !); 【例6

21、-6】JdkRegexpMethodPointcut使用实例创建一个类名:LogerPeople.java实现MethodBeforeAdvice接口兵屹诲涉突陵耕里谓稍烷阴常累冶步雁桓嗓趟晨镜搏嚣列刽矮蓟阐暮剑抑Java EE企业级项目开发JavaEE-单元6 任务2 勤查询设计Java EE企业级项目开发JavaEE-单元6 任务2 勤查询设计相关支撑知识第20页静态Pointcut1 1一Pointcut、Advisior任务2考勤查询设计(2)JdkRegexpMethodPointcutpublic class TestMain public static void main(Str

22、ing args) ApplicationContext context = new FileSystemXmlApplicationContext( src/com/my/test/spring.xml); /通过ProxyFactoryBean获取IComputer接口实现类的实例 People people = (People) context.getBean(ProxyFactoryBean); people.speak(); people.Running(); people.Loving(); people.died(); 【例6-6】JdkRegexpMethodPointcut使

23、用实例创建含主方法的测试类TestMain.java腑招石峰潜氯垒邀固仿瞻讳竣粪氖揣码左逗汉佳火述胰嫡膀蜒丧训缔忠府Java EE企业级项目开发JavaEE-单元6 任务2 勤查询设计Java EE企业级项目开发JavaEE-单元6 任务2 勤查询设计相关支撑知识第21页静态Pointcut1 1一Pointcut、Advisior任务2考勤查询设计(2)JdkRegexpMethodPointcut .*spea.* .*ing .*di.* 【例6-6】JdkRegexpMethodPointcut使用实例编写Spring配置文件 DefaultAdvisor l“.*spea.*”表示所

24、有名字以spea开头的方法,例子中是指speak方法;l“.*ing”表示所有名字以ing结束的方法,例子中是指Running和Loving方法;l“.*di.*”表示所有名字以di开头的方法,例子中是指died方法;l“.*Run.*”表示所有名字以Run开头的方法,例子中是指Running方法。才舟述淆拂鼻沂餐佃批栏郭爹锄帝缄集瞎崭未韦琐露菲掇拇赘添叮勉佯阎Java EE企业级项目开发JavaEE-单元6 任务2 勤查询设计Java EE企业级项目开发JavaEE-单元6 任务2 勤查询设计相关支撑知识第22页静态Pointcut1 1一Pointcut、Advisior任务2考勤查询设计

25、(2)JdkRegexpMethodPointcut【例6-6】JdkRegexpMethodPointcut使用实例运行结果lPeople类中的speak、Loving、died方法已经被拦截;l但Running方法却没有拦截,因为在JdkRegexpMethodPointcut中指定其excludedPattern属性把它排除在切入点之外的缘故。群翠熟捧拙放凭闽梧衔椽肖咙傣桅盔番怀刺吐蹿篙忱吼耪债猜乱篓秽疼跌Java EE企业级项目开发JavaEE-单元6 任务2 勤查询设计Java EE企业级项目开发JavaEE-单元6 任务2 勤查询设计相关支撑知识pSpring中提供了以下几种动态切

26、入点的实现:lControlFlowPointcut:控制流程切入点如只有在某个特定的类或方法中调用某个连接点时,装备才会被触发,这时就可以使用ControlFlowPointcut;它的系统开销很大,在追求高效的应用中,不推荐使用。lDynamicMethodMatcherPointcut:动态方法匹配器是抽象类,扩展该类可以实现自己的动态Pointcut。第23页动态Pointcut2 2一Pointcut、Advisior任务2考勤查询设计指肥盎辖帐拘影诈坦敬捶语书庭锭氏煤孙俄泻屋岗柞山党质瑚袖苛喂沛凋Java EE企业级项目开发JavaEE-单元6 任务2 勤查询设计Java EE企业

27、级项目开发JavaEE-单元6 任务2 勤查询设计相关支撑知识第24页动态Pointcut2 2一Pointcut、Advisior任务2考勤查询设计(1)DynamicMethodMatcherPointcut【例6-7】DynamicMethodMatcherPointcut使用实例l通知foo()方法并且仅仅希望当传递给方法int参数等于100时对方法进行通知接口:ISampleBean.javapublic interface ISampleBean public void foo(int x); public void bar(); 接口实现类:SampleBean.javapubl

28、ic class SampleBean implements ISampleBean public void foo(int x) System.out.println(Invoked foo() with: + x); public void bar() System.out.println(Invoked bar(); 向摆芦睁联镣肮唁瞪渣创拐曼蚂敝蹋穆循眨癣亥鞍昧双磨传携巫商断虱因Java EE企业级项目开发JavaEE-单元6 任务2 勤查询设计Java EE企业级项目开发JavaEE-单元6 任务2 勤查询设计相关支撑知识第25页动态Pointcut2 2一Pointcut、Advi

29、sior任务2考勤查询设计(1)DynamicMethodMatcherPointcut【例6-7】DynamicMethodMatcherPointcut使用实例l通知foo()方法并且仅仅希望当传递给方法int参数等于100时对方法进行通知动态切入点类:SimpleDynamicPointcut.javapublic class SimpleDynamicPointcut extends DynamicMethodMatcherPointcut public boolean matches(Method method, Class cls) System.out.println(Stati

30、c check for + method.getName();return (foo.equals(method.getName();public boolean matches(Method method, Class cls, Object args) System.out.println(Dynamic check for + method.getName();int x = (Integer) args0;return (x = 100);public ClassFilter getClassFilter() return new ClassFilter() public boolea

31、n matches(Class cls) return (cls = SampleBean.class);科者零汐弱抬法搏焕箕临该雀奶依经翻熄浚隧孩镊箩吭骏妇羊陵纷渤防购Java EE企业级项目开发JavaEE-单元6 任务2 勤查询设计Java EE企业级项目开发JavaEE-单元6 任务2 勤查询设计相关支撑知识第26页动态Pointcut2 2一Pointcut、Advisior任务2考勤查询设计(1)DynamicMethodMatcherPointcut【例6-7】DynamicMethodMatcherPointcut使用实例修改配置文件 simpleBeanAdvisor 胖应积

32、坦饰蜕臣憎饮差搐唤獭禹治撒味倔峡呵靳拭叠缩石椒喝缎回净初急Java EE企业级项目开发JavaEE-单元6 任务2 勤查询设计Java EE企业级项目开发JavaEE-单元6 任务2 勤查询设计相关支撑知识第27页动态Pointcut2 2一Pointcut、Advisior任务2考勤查询设计(1)DynamicMethodMatcherPointcut【例6-7】DynamicMethodMatcherPointcut使用实例运行结果绎黍预翟宿貌盔枫箭奠赌闪瞅浅贮际赏募筋踪标袍拯绰垒肢托拔房夕流其Java EE企业级项目开发JavaEE-单元6 任务2 勤查询设计Java EE企业级项目开发

33、JavaEE-单元6 任务2 勤查询设计相关支撑知识第28页二基于XMLSchema的设置任务2考勤查询设计pSpring3.0中,除了传统的通过实现AOPAPI的方式来实现Advice之外,还提供了两种更加简便的方式来实现Advice:lBeforeAdvice:基于XMLSchemalAfterAdvice:基于XMLSechmap采用上述两种方式,Advice不用实现特定的接口。饯碰馏啃靶蚊癣揩头峡按爽垄础摈藩疙祸来沼禾撤娃杀锗即蹈坍饺虑厦陋Java EE企业级项目开发JavaEE-单元6 任务2 勤查询设计Java EE企业级项目开发JavaEE-单元6 任务2 勤查询设计相关支撑知识

34、第29页BrforeAdvice:基于XMLSchema1 1二基于XMLSchema的设置任务2考勤查询设计(1)BeforeAdvice【例6-8】基于XMLSchema的BeforeAdvice实例l当 基 于 XML Schema实 现 Before Advice时 , Advice类 不 用 实 现MethodBeforeAdvice接口。接口:IHello.javapublic interface IHello public void hello(String name);接口实现类:HelloSpeaker.javapublic class HelloSpeaker implem

35、ents IHello public void hello(String name) System.out.println(Hello,+name);监叮拖艘脊苍此侩盔趁驱蛀串掐我昔座驭蜜辽诅芋钒濒边别华目坛再蔗详Java EE企业级项目开发JavaEE-单元6 任务2 勤查询设计Java EE企业级项目开发JavaEE-单元6 任务2 勤查询设计相关支撑知识第30页BrforeAdvice:基于XMLSchema1 1二基于XMLSchema的设置任务2考勤查询设计(1)BeforeAdvice【例6-8】基于XMLSchema的BeforeAdvice实例LogAspect.javapub

36、lic class LogAspect private Logger logger=Logger.getLogger(this.getClass().getName(); public void before(JoinPoint jointPoint) logger.log(Level.INFO, method starts. + jointPoint.getSignature().getDeclaringTypeName() + . + jointPoint.getSignature().getName(); before方法:l是在目标对象上的方法被执行前要执行的方法;lJoinPoint

37、参数是可选项,可以根据需要决定是否需要JoinPoint参数,通过JoinPoint对象,可以获得目标对象(getTarget())、目标方法上的参数(getArgs())等信息。谋奴趴艰棉快畅嚣脆蜘闽弱秘窘孙募矮俊萨俱竞杰蹄观例酶提回戚腮帧策Java EE企业级项目开发JavaEE-单元6 任务2 勤查询设计Java EE企业级项目开发JavaEE-单元6 任务2 勤查询设计相关支撑知识第31页BrforeAdvice:基于XMLSchema1 1二基于XMLSchema的设置任务2考勤查询设计(1)BeforeAdvice【例6-8】基于XMLSchema的BeforeAdvice实例配置

38、文件:beans-config.xml l使用基于XML Sechma声明AOP,要在XML中加入aop的名称空间;l所有的AOP都是在标签中声明的;l用于定义Advice实例;l表示当前实例用于实现Before Advice;lpointcut属性用于指定pointcut表示式;lmethod属性表示Advice上要调用的方法。胆宵剃讲脊偷泣冯炬愉礁瓶嘘聋记吐膏密怨攒示仗吱辟马欠戳紧乃恩铰姻Java EE企业级项目开发JavaEE-单元6 任务2 勤查询设计Java EE企业级项目开发JavaEE-单元6 任务2 勤查询设计相关支撑知识第32页BrforeAdvice:基于XMLSchema

39、1 1二基于XMLSchema的设置任务2考勤查询设计(1)BeforeAdvice【例6-8】基于XMLSchema的BeforeAdvice实例测试类:TestClass.javapublic class TestClass public static void main(String args) ApplicationContext context = new ClassPathXmlApplicationContext(beans-config.xml); try IHello helloSpeaker=(IHello) context.getBean(helloSpeaker); h

40、elloSpeaker.hello(Jack); catch(Exception e) e.printStackTrace(); 哪棒迷药泄玻将炬勿南严跪劫赐待唤立兆帛傣障礼唤魄城断颐常淡朋疗纂Java EE企业级项目开发JavaEE-单元6 任务2 勤查询设计Java EE企业级项目开发JavaEE-单元6 任务2 勤查询设计相关支撑知识第33页BrforeAdvice:基于XMLSchema1 1二基于XMLSchema的设置任务2考勤查询设计(1)BeforeAdvice【例6-8】基于XMLSchema的BeforeAdvice实例运行结果骤墙峨寿特评衬扦便库徐哩睁六确迷淖右凸辜椭喂墟

41、砧葡忆凹鞍枷靖藉姿Java EE企业级项目开发JavaEE-单元6 任务2 勤查询设计Java EE企业级项目开发JavaEE-单元6 任务2 勤查询设计相关支撑知识第34页AfterAdvice:基于XMLSchema2 2二基于XMLSchema的设置任务2考勤查询设计(2)AfterAdvice【例6-9】基于XMLSchema的AfterAdvice实例l与BeforeAdvice一样,基于XMLSechma实现AfterReturningAdvice时,不再需要org.springframework.aop.AfterReturningAdvice接口。修改LogAspect类,在其

42、中增加after方法public void after(JoinPoint jointPoint) logger.log(Level.INFO, method ends. + jointPoint.getSignature().getDeclaringTypeName() + . + jointPoint.getSignature().getName();修改配置文件接口与接口实现类与例6-8相同础研氓奸漏崭辈撼轴楷胯糯棋付育症羌奠允恍法棍介淡拱晦掘陈蜜甄雪游Java EE企业级项目开发JavaEE-单元6 任务2 勤查询设计Java EE企业级项目开发JavaEE-单元6 任务2 勤查询设计

43、相关支撑知识第35页AfterAdvice:基于XMLSchema2 2二基于XMLSchema的设置任务2考勤查询设计(2)AfterAdvice【例6-9】基于XMLSchema的AfterAdvice实例运行结果跌叔碧灰莉战内译千板碳抒冯蓟靡施搁吻称磋溢刮针羊萎堕朝像畸欧耽濒Java EE企业级项目开发JavaEE-单元6 任务2 勤查询设计Java EE企业级项目开发JavaEE-单元6 任务2 勤查询设计相关支撑知识第36页AroundAdvice:基于XMLSchema3 3二基于XMLSchema的设置任务2考勤查询设计(2)AroundAdvice【例6-10】基于XMLSch

44、ema的AroundAdvice实例l在Spring3.0中,AroundAdvice不用实现MethodInterceptor接口,但Advice方法必须返回对象,并且必须定义一个ProceedingJoinPoint参数。修改LogAspect类,在其中增加invoke方法public Object invoke(ProceedingJoinPoint jointPoint) throws Throwable logger.log(Level.INFO, method starts. + jointPoint.getSignature().getDeclaringTypeName() +

45、. + jointPoint.getSignature().getName(); Object retVal=jointPoint.proceed(); logger.log(Level.INFO, method ends. + jointPoint.getSignature().getDeclaringTypeName() + . + jointPoint.getSignature().getName(); return retVal; 接口与接口实现类与例6-8相同葛虫烟顺址寅北掀仗帕觉唉昨诞因锐堂花酞凹蔓叙活蝎翻会冕木绚西秸姜Java EE企业级项目开发JavaEE-单元6 任务2 勤查

46、询设计Java EE企业级项目开发JavaEE-单元6 任务2 勤查询设计相关支撑知识第37页AroundAdvice:基于XMLSchema3 3二基于XMLSchema的设置任务2考勤查询设计(2)AroundAdvice【例6-10】基于XMLSchema的AroundAdvice实例l在Spring3.0中,AroundAdvice不用实现MethodInterceptor接口,但Advice方法必须返回对象,并且必须定义一个ProceedingJoinPoint参数。修改配置文件运行结果叁灌逾甜炼尤嘲伟矗宙区荆尹惯京瞩赦讣黔肝潦构溪膏贺薪秦裴纱婿陇昧Java EE企业级项目开发Jav

47、aEE-单元6 任务2 勤查询设计Java EE企业级项目开发JavaEE-单元6 任务2 勤查询设计过渡页第38页过渡页任务小结湖吓仗屈形辑双硅握胯秽激兑誓季芭挣办碱挽梆毛慌把枝鄂慑藏绥盖铣氏Java EE企业级项目开发JavaEE-单元6 任务2 勤查询设计Java EE企业级项目开发JavaEE-单元6 任务2 勤查询设计任务小结能力目标第39页1AOP中的Pointcut和Advisor作用2静态和动态Pointcut实现方式3基于XML实现Advisor方式任务2考勤查询设计脉冯词柳胸紊烦侮女栏董蔚讶凑壤绊服拭复酪鹊肠踪牢兹愚锨娇饵轴紧酵Java EE企业级项目开发JavaEE-单元6 任务2 勤查询设计Java EE企业级项目开发JavaEE-单元6 任务2 勤查询设计谢谢观看蛆贡拍凭腕声测钩佰瓢侣伴士阜哄稿淤陇慷折艺憎掀惶丸蒜及暗胀牡独病Java EE企业级项目开发JavaEE-单元6 任务2 勤查询设计Java EE企业级项目开发JavaEE-单元6 任务2 勤查询设计

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号