aop 入门

aop概念不多说了,先接触到的是intercept拦截器,在spring中需要继承自HandlerInterceptor。

这两天看了很多例子,做个备份做下记录,希望看官能一起交流,加深理解。

  aop的实现一般分为2种:

    1、jdk自动代理。

    2、cglib代理。

 

 

面向切面编程在我看来常用于不需要更改主逻辑,但是需要在Controller执行前后需要完成的工作。

这种思想不需要在主逻辑类上更改流程,而是在主逻辑的某个特定方法,或者全部方法的前后或执行时,进行一些逻辑操作。

有个园友的比喻很贴切:就好像一个人去打酱油,忽然你半路跳出来,打了他一顿,他无须知道你为什么打他,他被打后还是需要继续去打酱油;

回来后你又打了他一顿,打完后你完成任务了,他继续把酱油送回去。甚至在他打完酱油回来的路上,你可以操作他的酱油,把酱油倒出来一半,或者往里撒把盐。

他无须管你做了什么,继续把酱油送回去就好了。你们各干各的,你打不打他,他依然要打酱油,不急不慢;你倒不倒酱油,他依然要送回去,不疾不徐。

1、先说自动代理,必须操作接口实现类

一般需要4个类

  (1)接口&实现类。打酱油的类

  (2)aop切面类。打手

  (3)配置类。让打手打打酱油的

  (4)调用类。main主环境

具体代码不写了,抄别人的还不如直接看原帖,原帖地址:

http://blog.csdn.net/fyduan/article/details/50389130

代码都能跑通,作者蛮不错。

2、cglib代理

需要引入两个包,用maven直接引入,pom.xml依赖如下:

<!-- aop -->
        <dependency>
            <groupId>cglib</groupId>
            <artifactId>cglib</artifactId>
            <version>3.1</version>
        </dependency>

参考博客:http://blog.csdn.net/xiaohai0504/article/details/6832990

这篇博客思路很清晰,细节代码有bug。

也是需要:

  (1)实体类   打酱油的

  (2)cglib代理类  打手操作步骤

  (3)工厂类  指定打手打指定打酱油的

  (4)场景 main

朋友说aop很重要,在此做个学习记录,希望能抛砖引玉得到大家指点。

 

说个问题,为什么我在项目中自动代理时候,例子代码可以运行无误,但是操作我的具体serviceImpl类时候提示注入错误?

我在serviceImpl中操作了mybatis的mapper接口。spring逻辑没问题,换个类名就出注入错误了?

posted on 2017-08-07 15:21  PPBoy  阅读(198)  评论(0编辑  收藏  举报

导航