美文网首页
浅析AOP实现原理(1)静态代理

浅析AOP实现原理(1)静态代理

作者: 挡不住的柳Willow | 来源:发表于2017-10-14 17:00 被阅读10次

什么是AOP

AOP是OOP的扩展,在OOP中,有许多与核心业务无关的代码如日志代码分布在项目的各个层次中,产生大量的重复代码,并且不利于模块的重用,因此,AOP提供了一种称为切面的技术,剖开对象的内部,将那些影响了多个类的共同行为封装成一个可重用的模块,称为Aspect,也就是切面。这样做的好处就是减少了重复的代码,降低模块之间的耦合。

在AOP中,最重要的就是AOP代理类的实现,使用了代理模式(不明白代理模式的点这里,分为静态代理动态代理
静态代理是用AOP框架提供的命令进行编译,从而在编译阶段就可生成AOP代理类;
动态代理则是在运行时借助JDK动态代理,CGLIB等在内存中临时生成AOP动态代理类。

静态代理

假设我们要在杀人之前发出警告,刺杀成功后立刻向组织汇报,用代理模式实现这个过程,然后在代理类中调用杀手的方法前后实现相应的过程

1、定义一个Killer接口,包含刺杀方法

public interface Killer {
    void kill();
}

2、定义杀手实现Killer接口

public class KillerImpl implements Killer{
    @Override
    public void kill() {
        // TODO Auto-generated method stub
        System.out.println("正在杀人,请勿打扰");
    }
}

3、定义杀手的代理类,在杀人前和杀人后都发出信息

public class Proxy implements Killer{
    private Killer killer;
    public Proxy(Killer killer) {
        // TODO Auto-generated constructor stub
        this.killer = killer;
    }
    @Override
    public void kill() {
        // TODO Auto-generated method stub
        System.out.println("我准备杀人啦");
        killer.kill();
        System.out.println("完成任务,今晚吃鸡");
    }
}

4、测试

public class Test {
    public static void main(String[] args) {
        KillerImpl killerImpl = new KillerImpl();
        Proxy proxy = new Proxy(killerImpl);
        proxy.kill();
    }
}

5、输出结果:

image.png

相关文章

  • 浅析AOP实现原理(1)静态代理

    什么是AOP AOP是OOP的扩展,在OOP中,有许多与核心业务无关的代码如日志代码分布在项目的各个层次中,产生大...

  • Spring AOP 实现原理

    Spring AOP 实现原理 静态代理 众所周知 Spring 的 AOP 是基于动态代理实现的,谈到动态代理就...

  • Spring_AOP_02——实现原理

    本文主要讲实现AOP的 代理模式原理,以及静态代理,动态代理的区别和具体实现。 对SpringAOP的概念和使用,...

  • java代理demo

    需求:使用AOP方式打印日志 用户service层,接口与实现类 1.静态代理 静态代理,使用一个代理类,需要实现...

  • 带你初识Java的代理模式

    Spring AOP是基于动态代理设计模式实现的,相对的就有静态代理 动态代理和静态代理 静态代理 对于静态代理,...

  • AOP原理详解

    1. 原理 AOP切面编程分为静态编织和动态代理两种模式。AOP其实就是设计模式中代 理模式,代理类全权代...

  • 2018-09-16

    AOP的XML配置: AOP的先关术语: Spring底层的AOP实现原理 动态代理: JDK动态代理:只能对实现...

  • 源码角度理解JDK动态代理的实现原理

    在另一篇文章浅析AOP实现原理(2)JDK动态代理中我们了解了JDK动态代理的用法,但是光会用还不行,这篇文章我们...

  • Spring 学习--AOP

    参考文献:深入浅析Spring 的aop实现原理Spring AOP 深入剖析AOP: 面向切面编程oop是从上往...

  • 静态动态AOP

    静态AOP实现:AOP框架在编译阶段对程序进行修改,即实现对目标类的增强,生成静态的AOP代理类(生成的*.cla...

网友评论

      本文标题:浅析AOP实现原理(1)静态代理

      本文链接:https://www.haomeiwen.com/subject/ihazyxtx.html