zoukankan      html  css  js  c++  java
  • Spring---AOP

    AOP:面向切面编程,AOP是OOP(面向对象)的拓展和延伸。

    1.Spring底层的AOP实现原理

    动态代理
         JDK动态代理: 只能对实现了接口的类产生代理。
         Cglib动态代理:可以对没有实现接口的对象产生代理,生成子类。
    Spring在你实现了接口的类,会使用JDK代理,没有实现使用Cglib代理,自动更换

    2.Spring的AOP的开发入门(XML文件配置)

           1.建项目,导包。
            

           2.在src下新建applicationContext.xml配置文件,并引入约束 

    //applicationContext.xml
    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:aop="http://www.springframework.org/schema/aop" 
        xsi:schemaLocation="
            http://www.springframework.org/schema/beans 
            http://www.springframework.org/schema/beans/spring-beans.xsd
            http://www.springframework.org/schema/aop 
            http://www.springframework.org/schema/aop/spring-aop.xsd"> 
    
    
    </beans>

           3.编写测试类,并做相应的配置

           4.测试,这里使用Spring和JUnit的整合进行测试。需要导入spring-test-4.2.4.RELEASE.jar包
             

    3.Spring的AOP开发的通知类型

         1.前置通知:在切点之前执行,可以获得切点信息
            

         2.后置通知:可以获得切点的返回值  

         3.环绕通知:环绕通知可以控制切点函数是否执行
           

         4.异常通知
            当有异常发生是执行的通知,使用<aop:after-throwing method=""/>配置切面,可获得异常信息,切面函数的参数名必须和xml中的throwing相同

         5.最终通知
            和代码中的finally块相似,切点执行完毕后最终执行的通知,使用<aop:after method=""/>配置

    4.Spring切入点表达式的写法

           语法:[访问修饰符] 方法返回值 包名.类名.方法名(参数),,,,访问修饰符可以不要,是基于execution函数完成的,返回值,包名,类名等全都可以用*表示(代表任意)
          

    5.Spring的AOP的注解的入门

          使用注解实现AOP开发所需的包和使用XML实现是一样的,操作也差不多,把目标类和切面类交给Spring管理,只是切点的定义是通过加注解实现的,以及在xml文件中配置<aop:aspectj-autoproxy/>开启AOP注解的使用。
        ​      

         AOP注解开发的通知类型

                1.@Before(value="") :前置通知

                2.@AfterReturning(value="",returning=""):后置通知,returning表示返回值。用法和xml中一样

                3.@Around(value=""):环绕通知,切面方法也需要一个ProceedingJoinPoint类型的参数

                4.@AfterThrowing(value="",throwing=""):参数throwing的用法和xml中的一样

                5.@After(value=""):最终通知,无论是否有异常都会执行。

  • 相关阅读:
    linux下shell显示-bash-4.1#不显示路径解决方法
    update chnroute
    An error "Host key verification failed" when you connect to other computer by OSX SSH
    使用dig查询dns解析
    DNS被污染后
    TunnelBroker for EdgeRouter 后记
    mdadm详细使用手册
    关于尼康黄的原因
    Panda3d code in github
    Python实例浅谈之三Python与C/C++相互调用
  • 原文地址:https://www.cnblogs.com/zy-Luo/p/11033219.html
Copyright © 2011-2022 走看看