zoukankan      html  css  js  c++  java
  • spring框架DI(IOC)和AOP 原理及方案

    http://www.blogjava.net/killme2008/archive/2007/04/20/112160.html

    http://www.oschina.net/code/snippet_151786_13016

    摘抄转自这里:http://www.cnblogs.com/yanbincn/archive/2012/08/13/2636961.html

    IOC实现方式:

    创建工厂->创建DOM->读取XML配置->创建CLASS实例->根据构造方式(构造方法set方法)和属性类型(引用类型赋值递归初始化/MAP类型/数组类型)等初始化class实例-〉放入MAP中。

    getBean则首先从MAP中查,若没有,则查找XML配置是否为lazy-init,如果是,则实例化,否则,返回异常。

     AOP:本质就是代理

    1、概念术语  

      在开始之前,需要理解Spring aop 的一些基本的概念术语(总结的个人理解,并非Spring官方定义):

      切面(aspect):用来切插业务方法的类。

      连接点(joinpoint):是切面类和业务类的连接点,其实就是封装了业务方法的一些基本属性,作为通知的参数来解析。

      通知(advice):在切面类中,声明对业务方法做额外处理的方法。

      切入点(pointcut):业务类中指定的方法,作为切面切入的点。其实就是指定某个方法作为切面切的地方。

      目标对象(target object):被代理对象。

      AOP代理(aop proxy):代理对象。

      通知:

      前置通知(before advice):在切入点之前执行。

      后置通知(after returning advice):在切入点执行完成后,执行通知。

      环绕通知(around advice):包围切入点,调用方法前后完成自定义行为。

      异常通知(after throwing advice):在切入点抛出异常后,执行通知。

    要在项目中使用Spring AOP 则需要在项目中导入除了spring jar包之外,还有aspectjweaver.jar,aopalliance.jar ,asm.jar 和cglib.jar 。

    好了,前提工作准备完成,Spring 提供了很多的实现AOP的方式,在学习过程中,循序渐进。进行Spring 接口方式,schema配置方式和注解的三种方式进行学习。好了废话不多说了,开始spring aop学习之旅:

    3、方式一:AOP接口

      利用Spring AOP接口实现AOP,主要是为了指定自定义通知来供spring AOP机制识别。主要接口:前置通知 MethodBeforeAdvice ,后置通知:AfterReturningAdvice,环绕通知:MethodInterceptor,异常通知:ThrowsAdvice 。见例子代码:

    利用方式一的配置起来,可见代码还是非常的厚重的,定义一个切面就要定义一个切面类,然而切面类中,就一个通知方法,着实没有必要。所以Spring提供了,依赖aspectj的schema配置和基于aspectj 注解方式。这两种方式非常简介方便使用,也是项目中普遍的使用方式。

    方式三:aspectj注解

    注解在项目中已经到处都是了,撇开一些优劣不提,开发的便利性和可读性是非常的方便的。用来配置Spring AOP也非常简单便利

  • 相关阅读:
    Windows Live Writer介绍及相关问题解决
    阳光盒子火狐浏览器
    Cracking Wifi Wpa-Wpa2 in 5 second——Dumpper V.80.8 +JumpStart+WinPcap
    叮咚recovery——想刷什么包就刷什么包
    vivo s11t线刷救砖过程
    syskey——让你的电脑更加安全
    滑动关机
    QQ空间点赞大法+浏览器自动翻页脚本=点赞根本停不下来
    Kon-boot v2.5介绍与使用方法总结(支持win10)
    Mimikatz的使用心得
  • 原文地址:https://www.cnblogs.com/songxinya/p/3176724.html
Copyright © 2011-2022 走看看