zoukankan      html  css  js  c++  java
  • Spring IoC 与 AOP

    Spring IoC 与 AOP


    一、IoC (Inversion of Control),控制反转

    获取依赖对象(Spring Bean)方式反转。

    • 正转:在对象中主动控制去直接获取依赖对象。
    • 反转:由容器来帮忙创建及注入依赖对象

    两种不同类型容器如下:

    • Spring BeanFactory 容器

      它是最简单的容器,给 DI(依赖注入) 提供了基本的支持,它用 org.springframework.beans.factory.BeanFactory 接口来定义。

    • Spring ApplicationContext 容器

      该容器添加了更多的企业特定的功能,例如从一个属性文件中解析文本信息的能力,发布应用程序事件给感兴趣的事件监听器的能力。该容器是由 org.springframework.context.ApplicationContext 接口定义。

    PS:ApplicationContext 容器包括 BeanFactory 容器的所有功能,所以通常ApplicationContext作为Spring容器。BeanFactory 仍然可以用于轻量级的应用程序,如移动设备或基于 applet 的应用程序。

    二、AOP (Aspect Oriented Programming),面向切面编程

    • 原理

      通过动态代理的方式为程序添加统一功能,集中解决一些公共问题。

    • 优点

      • 各个步骤之间的良好隔离性使耦合性大大降低;
      • 源代码无关性。扩展功能时不需对源码进行修改操作;
    • 应用场景

      • Authentication 权限
      • Caching 缓存
      • Context passing 内容传递
      • Error handling 错误处理
      • Lazy loading 懒加载
      • Debugging 调试
      • logging 日志
      • tracing 追踪
      • profiling and monitoring 记录跟踪优化
      • Performance optimization 性能优化
      • Persistence 持久化
      • Resource pooling 资源池
      • Synchronization 同步
      • Transactions 事务
    • 核心概念

      • 横切关注点

        对哪些方法进行拦截,拦截后怎么处理,这些关注点称之为横切关注点

      • 切面(aspect)

        类是对物体特征的抽象,切面就是对横切关注点的抽象

      • 连接点(joinpoint)

        被拦截到的点,因为Spring只支持方法类型的连接点,所以在Spring中连接点指的就是被拦截到的方法,实际上连接点还可以是字段或者构造器

      • 切入点(pointcut)

        对连接点进行拦截的定义

      • 通知(advice)

        所谓通知指的就是指拦截到连接点之后要执行的代码,通知分为前置、后置、异常、最终、环绕通知五类

      • 目标对象

        代理的目标对象

      • 织入(weave)

        将切面应用到目标对象并导致代理对象创建的过程

      • 引入(introduction)

        在不修改代码的前提下,引入可以在运行期为类动态地添加一些方法或字段

    • Spring对AOP的支持

      Spring中AOP代理由Spring的IOC容器负责生成、管理,其依赖关系也由IOC容器负责管理。

      • 默认使用Java动态代理来创建AOP代理;
      • 当需要代理的类不是接口的时候,Spring会切换为使用CGLIB代理;
    • 应用 AOP

      • 定义普通业务组件;

      • 定义切入点,一个切入点可能横切多个业务组件;

      • 定义增强处理,增强处理就是在AOP框架为普通业务组件织入的处理动作;

  • 相关阅读:
    winform 调用http 通过代理出现的一系列问题
    【转】 CSS3阴影 box-shadow的使用和技巧总结
    【转】 C#程序以管理员权限运行
    【转】WMI使用的WIN32_类库名
    【转】C#取硬盘、CPU、主板、网卡的序号 ManagementObjectSearcher
    【转】纯CSS设置Checkbox复选框控件的样式
    【转】vs2012 打包安装更改 setup.exe的图标
    【转】VS2012程序打包部署详解
    142. Linked List Cycle II
    141. Linked List Cycle
  • 原文地址:https://www.cnblogs.com/wscy/p/9204160.html
Copyright © 2011-2022 走看看