码迷,mamicode.com
首页 > 编程语言 > 详细

二:SpringAOP

时间:2019-04-12 23:17:57      阅读:160      评论:0      收藏:0      [点我收藏+]

标签:pre   top   重复   接口   异常   lte   完成   生成   核心   

一:AOP 面向切面编程思想
横向重复,纵向抽取

|- filter中
|- 动态代理
|- interceptor中

二:动态代理

1.通过动态代理可以体现aop思想
2.对目标对象中的方法进行增强

三:spring实现aop的原理
1.动态代理(优先)

被代理对象必须要实现接口,才能产生代理对象,如果没有接口将不能使用动态代理技术

2.cglib代理(没有接口)

第三方代理技术,cglib代理.可以对任何类生成代理.代理的原理是对目标对象进行继承代理. 如果目标对象被final修饰.那么该类无法被cglib代理.

四:spring aop开发:可以对任何类进行代理增强

spring封装了动态代理代码.不需要手写动态代理代码.
封装了cglib代理.

五:spring中名词:

Joinpoint(连接点):目标对象中,所有可以增强的方法
Pointcut(切入点):目标对象,已经或需要增强的方法
advice(通知/增强):需要增强的代码.
weaving(织入):动词.将通知应用到切点的过程.
target(目标对象):被代理对象.
proxy(代理对象):将通知织入到目标对象之后,形成代理对象
aspect(切面):切入点+通知

六:步骤
1.导包

    4+2:核心包+日志包
    2:spring中aop+aspect
    2:spring依赖包:aop联盟+weaving

2.准备目标对象

3.准备通知类

    前置通知
    后置通知 方法正常结束
    环绕通知
    异常拦截通知
    后置通知 无论如何都执行    

4.配置文件中配置,导入aop约束

    1>目标对象
    2>通知对象
    3><aop:config>
        <aop:ponint-cut id="切点名称" expression="execution(切点表达式)" />
        <aop:aspect ref="通知对象名称" >
        <aop:before method="" ponintcut-ref=""  />
        <aop:after-returning method="" ponintcut-ref=""  />
        <aop:around method="" ponintcut-ref=""  />
        <aop:after-throwing method="" ponintcut-ref=""  />
        <aop:after method="" ponintcut-ref=""  />
    </aop:aspect>

扩展:使用注解完成aop

    1.导包
        4+2
        2 aop+aspect
        2 aop联盟+weaving
    2.准备目标对象

    3.准备通知类
        前置通知
        后置通知 方法正常结束
        环绕通知
        异常拦截通知
        后置通知 无论如何都执行

    4.配置文件中配置,导入aop约束
        1>目标对象
        2>通知对象
        3><aop:aspect-autoproxy> 开启注解aop
            
    5.注解
        @Aspect 指定当前类是通知类
            
        @Before 前置通知方法
        @after-returning 后置通知方法
        @around 环绕通知方法
        @after-throwing 异常拦截通知方法
        @after 后通知方法
            
        @PointCut 抽取切点表达式

二:SpringAOP

标签:pre   top   重复   接口   异常   lte   完成   生成   核心   

原文地址:https://www.cnblogs.com/itzlg/p/10699162.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!