spring4-day03讲义.doc

  1. 1、本文档共18页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
spring4-day03讲义

Spring_day03 总结 今日任务 使用 Spring 的 AOP 对客户管理的 DAO 进行增强 使用 Spring 完成转账的事务管理 教学导航 掌握 Spring 的声明式事务 掌握 SSH 的整合 教学目标 教学方法 案例驱动法 案例一:使用 Spring 的 AOP 对客户管理的 DAO 进行增强 1.1 案例需求 1.1.1 需求描述 对于 CRM 的系统而言,现在有很多的 DAO 类,比如客户的 DAO,联系人 DAO 等等。客户提出一个需求要开发人员实现一个功能对所有的 DAO 的类中以 save 开头的方法实现权限的校验,需要时管理员的身份才可以进行保存操作。 1.2 相关知识点 1.2.1 Spring 使用 AspectJ 进行 AOP 的开发:注解的方式 引入相关的 jar 包: spring 的传统 AOP 的开发的包 spring-aop-4.2.4.RELEASE.jar .aopalliance-1.0.0.jar aspectJ 的开发包: .aspectj.weaver-1.6.8.RELEASE.jar spring-aspects-4.2.4.RELEASE.jar 引入 Spring 的配置文件 引入 AOP 约束: beans xmlns=/schema/beans xmlns:xsi=/2001/XMLSchema-instance xmlns:aop=/schema/aop xsi:schemaLocation= /schema/beans /schema/beans/spring-beans.xsd /schema/aop /schema/aop/spring-aop.xsd /beans 编写目标类: public class ProductDao { public void save(){ System.out.println(保存商品...); } public void update(){ System.out.println(修改商品...); } public void delete(){ System.out.println(删除商品...); } public void find(){ System.out.println(查询商品...); } } 配置目标类: !-- 目标类============ -- bean id=productDao class=cn.spring.demo4.ProductDao/bean 开启 aop 注解的自动代理: aop:aspectj-autoproxy/ AspectJ 的 AOP 的注解: @Aspect:定义切面类的注解 通知类型: * @Before :前置通知 * @AfterReturing :后置通知 * @Around :环绕通知 * @After :最终通知 * @AfterThrowing :异常抛出通知. @Pointcut:定义切入点的注解 编写切面类: @Aspect public class MyAspectAnno { @Before(MyAspectAnno.pointcut1()) public void before(){ System.out.println(前置通知===========); } @Pointcut(execution(* cn.spring.demo4.ProductDao.save(..))) private void pointcut1(){} } 配置切面: !-- 配置切面类 -- bean id=myAspectAnno class=cn.spring.demo4.MyAspectAnno/bean 其他通知的注解: @Aspect public class MyAspectAnno { @Before(MyAspectAnno.pointcut1()) public void before(){ System.out.println(前置通知===========); } @AfterReturning(MyAspectAnno.pointcut2()) public void afterReturning(){ System.out.println(后置通知===========); } @Around(MyAspectAnno.pointcut3()) public Object around(ProceedingJoinPoint joinPoint) throws Throwable{ System.out.printl

您可能关注的文档

文档评论(0)

138****7331 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档