zoukankan      html  css  js  c++  java
  • IOC及AOP实现原理

    IOC实现原理:http://blog.csdn.net/it_man/article/details/4402245

    spring通过加载我们配置文件,将配置信息保存的Map里!!!!!key是bean id ,value是 这个对象!!!实例化一个类时,它通过反射调用类中set方法将事先保存在HashMap中的类属性注入到类中

    IOC:由spring来负责控制对象的生命周期和对象间的关系,我们只需要关注业务对象即可,使用对象时直接注入即可。所有的类都会在spring容器中登记,你需要什么东西,然后spring会在系统运行到适当的时候,把你要的东西主动给你,同时也把你交给其他需要你的东西。所有的类的创建、销毁都由 spring来控制,对于某个具体的对象而言,以前是它控制其他对象,现在是所有对象都被spring控制,所以这叫控制反转

    DI:系统运行中,动态的向某个对象提供它所需要的其他对象。这一点是通过依赖注入

    一般DI可以理解为IOC,DI其实就是IOC的另外一种说法

    参考:https://www.ibm.com/developerworks/cn/java/j-lo-springaopcglib/

    AOP:应用于处理一些具有横切性质的系统级服务,如事务管理、安全检查、缓存、对象池管理等,关键就在于代理,静态代理和动态代理

      静态代理:在编译阶段就可生成 AOP 代理类

      动态代理:运行时借助于 JDK 动态代理、CGLIB 等在内存中“临时”生成 AOP 动态代理类

    通知(Advice)的种类 : Before(前置通知)  AfterReturning(后置通知) AfterThrowing(异常通知) After(最终通知) Around(环绕通知)

    AOP 专门用于处理系统中分布于各个模块(不同方法)中的交叉关注点的问题,,只要定义方法,无需在业务中显示调用,系统会自动执行该特殊方法

    AspectJ :编译时增强,静态代理

    Spring AOP:运行时增强,动态代理

    进行 AOP 编程的关键就是定义切入点和定义增强处理,需手动修改方法,只要定义切入点即可

    代理对象的方法 = 增强处理 + 被代理对象的方法

    CGLIB(Code Generation Library);可以在运行时候动态是生成某个类的子类。

    Spring AOP 的根本所在:Spring AOP 动态选择使用JDK代理还是CGlib代理,代理类实现接口就用JDK,否则就用CGLIB 来动态地生成代理对象,这个代理对象就是所谓的 AOP 代理,

        而 AOP 代理的方法则通过在目标对象的切入点动态地织入增强处理,从而完成了对目标方法的增强。

    CGLIB包的底层是通过使用一个小而快的字节码处理框架ASM(Java字节码操控框架),

  • 相关阅读:
    AC自动机【萌新文章】
    ubuntu安装pandas
    pandas.Series函数用法
    关于scikit-learn
    关于scikit-learn
    Ubuntu安装openmpi
    Ubuntu分区小知识与分区方案
    Ubuntu16.04安装x11VNC远程桌面
    Ubuntu用户权限管理(chown, chmod)
    Ubuntu新建用户组
  • 原文地址:https://www.cnblogs.com/team42/p/7051289.html
Copyright © 2011-2022 走看看