SpringAop

来源:互联网 发布:itunes下载安装软件 编辑:程序博客网 时间:2024/06/01 07:48

一:AOP概述

  • AOP概述:Aspect Oriented Programming, 面向切面的编程,其作用是在不影响主要业务逻辑的前提下 ,以透明的方式加入一些其他辅助的业务逻辑
  • 面向切面编程的实现原理可以使用动态代理或者使用装饰模式或者静态代理(service层就是dao层的一个静态代理)
  • AOP的特点:
    • 利于维护,实现可插拔辅助业务逻辑
    • 实现辅助业务逻辑的模块化
  • AOP功能:
    • 可以透明的加入其它的辅助逻辑
    • 与持久层框架整合后将事务的控制纳入进来
  • AOP实现原理:基于JDK的动态代理或者CGLib动态代理,aop默认采用JDK的代理

二:JDK动态代理的实现

  • 定义接口+定义实现类+代理类(实现InvocationHandler接口)
  • 定义代理对象和被代理对象达成代理协议(Proxy),返回被代理对象的接口
  • 通过返回的接口变量调用业务逻辑方法

三:AOP编程:

  • AOP中相关概念:
    • 切面:Aspect关注点的模块化,例如安全验证,性能检测,日志记录等被封装到类中,关注点所属的
    • 连接点:JoinPoint 主要的业务逻辑方法或者正在被执行的业务逻辑方法
    • 通知:advice 在连接点执行过程中,执行关注点的时机,分为前通知,后通知,环绕通知,抛出异常后通知
      • 前通知:执行连接点之前通知某个关注点方法去执行
      • 后通知:执行连接点之后通知某个关注点方法去执行
      • 环绕通知:在执行连接点之前和连接点执行之后,通知某个方法执行
      • 抛出异常后通知:在连接点执行过程中如果产生异常去通知某个关注点的方法执行
    • 切入点:Pointcut 切面中的关注点横切连接点的表达式即在执行哪些业务方法时被关注点横切
    • 织入:Weaving 将关注点,连接点以及通知整合在一起的过程
  • AOP编程
    • 编写Dao&Service:其中service中的方法称为连接点(JoinPoint)
    • 拷贝aop相关的jar包
    • 编写切面类
    • AOP的配置:分为配置文件和注解两种方式配置
      • 配置文件配置
        • 编程
        • 创建切面类
        • 在beans.xml中配置切面
        • 进行aop的配置
        • <aop:config><aop:aspect ref="xxx"><aop:pointcut expression="execution(* 包.*.*(..))" id="pc1"></aop:aspect></aop:config>
        • 可以在关注点的前通知和后通知调用方法中加入JoinPoint参数,可以获取连接点的信息
  • 案例在spring AOP中引入Log4J日志处理
      *
  • 配置环绕通知

    • 在MyAspect类中加入方法
  • AOP的注解配置

    • 启用AOP的注解
      • <aop:aspectj-autoproxy/>
      • 在切面类上配置
      • @Component//定义切面类的对象
      • @Aspect//引入切面
      • @Scope(“prototype”)//可选
    • 在前通知,后通知,环绕通知,异常通知的方法上加入切点注解