[计算机软件及应用]Spring简介3.pptVIP

  1. 1、本文档共34页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
[计算机软件及应用]Spring简介3

电子发烧友 电子技术论坛 第 三 章 Spring AOP 什么是AOP 为了理解AOP,请思考如下需求: 角色:上帝,人(每个人都有大脑) 现在上帝希望知道每个人的想法,请用面向对象的方法解决 设计登场角色 上帝,只有一个 设计登场角色 人,好几十亿 设计登场角色 大脑,重要器官,每个人有自己的大脑 解决问题 为了要知道人们的思想,上帝决定用换脑的手段来达到目的 由于人在出生时并不知道自己的大脑是怎么来的(由Spring注入的),因此,可以在他出生时安装另一个大脑 换脑的两种方法 用继承方式 用接口方式 使用继承的方式 使用接口的方式 实际上,只要能“思考”,人类不在意究竟给他的脑袋里装一个大脑还是一个石头(假如石头能思考的话) “大脑”只是一种能够思考的象征 因此,重新审视我们的设计,将大脑变成接口,变成一个抽象的概念 使用接口的方式 优先选择接口而非继承 当需要进行动态代理时,接口比继承更容易实现 接口具有更好的扩展性 问题 上帝不想创建过多的代理对象,仅仅希望实现具体操作 使用Spring提供的办法 刚才的例子里,无论是使用继承还是接口进行换脑,在设计模式里都称为代理模式 请大家区分代理与被代理对象分别是谁 Spring为代理提供了更方便的控制 Spring中AOP AOP即面向切面的编程 在AOP的概念中,将刚才的场景中的角色划分的更为细致 上例中的上帝,称之为Advice(被通知对象),它知道该做什么 关于上帝何时在什么时间、地点被通知,称之为Pointcut(切入点) 对于真实的大脑,称之为Target(目标对象) 对于假的大脑,不管是真实大脑的子类还是它们实现了共同的接口,都称之为Proxy(代理对象) Spring中的Advice和Pointcut 常见的Advice和Pointcut的类型 MethodBeforeAdvice AfterReturningAdvice ThrowsAdvice MethodInterceptor 配置文件相应的改动 注意事项 Advice仅用于通知,如果需要拦截方法的调用需要使用Interceptor 无论是MethodBeforeAdvice、AfterReturningAdvice、ThrowsAdvice它们都不能改变方法的执行(本身的行为) 而Interceptor具有改变方法行为的能力 MethodInterceptor需要实现的方法 注意,一旦实现了MethodInterceptor,那些Advice(通知)就不管用了 讨论 使用Spring提供的ProxyFactoryBean提供代理的好处 不必自己创建整个代理对象了,代理对象由ProxyFactoryBean产生,程序员只需要关注实现具体功能 使用ProxyFactoryBean可以创建几乎任何对象的代理,减少了程序中代理类的数量 问题 但是现在上帝很郁闷,现在它必须戴上一大堆身份,弄得身上脏兮兮的 现在的结果是使得上帝依赖于Spring提供的接口,上帝离了Spring就活不了了 怎么办 Spring2.0里的AOP 使用AspectJ 使用AspectJ达到相同的效果 在AspectJ的表达中上帝是一个POJO,不需要实现特定的接口就可进行AOP操作 这个例子里,上帝在AspectJ中被成为Aspect(即切面),它的目的是执行正常逻辑之外的附加操作 与之前的Spring1.x中的AOP相比,可以把Advisor(通知)看作是知道了切入地点的Aspect 使用AspectAOP的步骤 将BeanFactory换成ApplicationContext ApplicationContext是BeanFactory的子接口 ApplicationContext提供了更多的功能 如果将BeanFactory比作一个小作坊,那么ApplicationContext就是一个生产车间 使用AspectAOP的步骤 使用spring2.0中提供的schema样式的配置文件 God类的变化 配置文件的变化 它们如何对应 其他类型的JoinPoint aop:after-returning aop:after-throwing aop:around aop:advisor -- 表示已经定义好连接点的切面 Pointcut表达式 execution表示执行 public表示公共方法 第一个*表示任意返回类型 第二个*表示任意方法名 (..)表示任意参数 更多的例子 问题 如何配合切入点表达式,向切面类传递参数 使用新语法的好处 减少了代理类 在切入点的控制上更为细腻 execution(public * *(..)) execution(* set*(..)) execution(* tra

您可能关注的文档

文档评论(0)

qiwqpu54 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档