zoukankan      html  css  js  c++  java
  • 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逻辑没问题,换个类名就出注入错误了?

  • 相关阅读:
    JS语言中的JSON.parse()和JSON.stringify()
    Django中 @login_required用法简介
    Django model中的save后的return
    windows下gethostbyname 调用失败
    学习打造自己的DEBUG_NEW
    关于new/delete、malloc/free的内存泄漏检测
    C++连接mysql的两种方式(ADO连接和mysql api连接)
    windows下Redis编译安装
    mysql之字符编码问题
    mysql错误用法insert into where
  • 原文地址:https://www.cnblogs.com/PPBoy/p/7299316.html
Copyright © 2011-2022 走看看