zoukankan      html  css  js  c++  java
  • sprin AOP

    spring-aop:
    动态代理在程序执行过程中创建动态代理对象,通过动态代理对象 通过执行方法 给目标类的方法增加额外功能称为功能增强
    实现步骤JDK
    1.创建目标类,SomeServiceImpl目标类,给它的doSome,doOther增加输出时间,事务
    2.创建InvocationHandler接口实现类,在这个类实现给目标方法增加功能
    3.使用jdk类proxy,创建动态代理对象。实现创建对象的能力
    spring-aop:
    动态代理:
    1.JDK动态代理,使用jdk中proxy,Meghod,InvocationHanderl创建动态代理对象。实现创建对象的能力
    JDK动态代理必须实现接口
    2.cglib动态代理:第三方的工具库,创建代理对象,原理是继承,通过继承目标,创建子类 子类就算动态代理对象,目标类不能是final,方法也不是是final
    作用: 1.在源代码不改变的情况下,增加功能
    2.减少代码重复率
    3.专注业务逻辑代码
    4.解耦合 让业务功能跟非业务功能分离
    AOP:面向切面编程,基于动态代理的 ,可以使用jdk/cglib两中代理方式。
    AOP就是动态代理的规范化,把动态代理的实现步骤,方式都定义好,让开发人员用一种统一的方式使用动态代理
    AOP:面向切面编程
    Aspect:切面,给目标类的方法增加额外功能称为切面 切面特点一般都是非业务方法可以独立使用
    Orlent:面向
    Programmling:编程
    面向切面编程:
    1.需要在分析项目功能时,找出切面
    2.合理的安排切面的执行时间
    3.合理的安排切面的执行位置
    面向切面编程的基本术语:
    1.Aspect:切面 表示增强功能,就是一堆代码,完成某个功能,非业务功能
    2.JoinPoint:连接点 ,连接业务跟切面的位置,就是某类中的业务方法
    3.Pointcut:切入点,指多个连接点方法的集合,多个方法
    4.目标对象:要给哪个类增加方法功能,这个类就是目标对象
    5.Advice:通知,通知表示切面功能执行的时间
    切面三个关键要素:
    1.切面的功能代码 切面干什么
    2.切面的执行位置,使用Pointcut表示切面的执行位置
    3.切面的执行时间,使用Advice表示时间,在目标方法之前,还是方法之后
    AOP实现:
    1.aop是一个规范,是动态的一个规范化,一个标准
    aop技术实现框架:spring在内部实现了aop的规范化,能做AOP的工作 主要在事务处理使用AOP 项目开发中很少使用spring中的AOP 比较笨重
    2.aspectJ:是一个开源专门做aop的框架。spring框架集成了aspertj框架,通过spring就能使用aspectj的功能
    aspectJ框架实现aop有两中方式
    1.使用xml配置文件配置全局事务
    2.使用注解,我们在项目中要做aop功能,一般都使用注解,aspectj有五个注解
    学习aspectjd的使用语法:
    1.切面的执行时间,在规范中叫做Advice
    在aspectj框架中使用注解表示:
    1.@Before
    2.@AfterReturning
    3.@Around
    4.@AfterThrowing
    5.@After

    使用aspectj框架实现aop 目的:给以及存在的类一些类跟方法,增加额外的功能。前提是不改变原来的代码。
    使用aspectj实现aop的基本步骤
    1.新建maven
    2.加入依赖
    1.spring依赖
    2.aspectj依赖
    3.junit单元测试
    3.创建目标类:接口和她的实现类
    给类的方法增加功能
    4.创建切面类:普通类
    1.在类的上面加@Aspect
    2.在类的定义方法,方法就是面向切面要执行的功能代码
    在方法的上面加入aspectj中的注解通知,例如@Before 有需要指定切入点表达式execution()
    5.创建spring的配置文件 在文件中要声明对象,把对象交给容器统一管理
    声明对象可以使用注解 或者 xml配置文件
    1.声明目标对象
    2.声明切面类的对象
    3.声明aspectj框架中的自动代理生成标签 自动代理生成器:用来完成代理对象的自动创建功能的。
    6.创建测试类,从spring容器中获取目标对象(实际就是代理对象)
    通过代理执行方法,实现aop的功能增强
    aspectj通过注解实现动态代理功能

  • 相关阅读:
    System.Threading.Timer 无规律执行次数的问题
    C#通过URL获取顶级域名的方法
    C#变量声明添加?与@的用法
    基于system.diagnostics Trace的日志输出
    SSB(SQLservice Service Broker) 入门实例
    .NET 入门测试题二:流程控制
    .NET 入门测试题三:变量的更多内容
    .NET 入门测试题四:函数
    .NET 入门测试题一:变量与表达式
    WinCE切换GPRS
  • 原文地址:https://www.cnblogs.com/cengzhuquan/p/14607608.html
Copyright © 2011-2022 走看看