美文网首页
Spring AOP源码解析

Spring AOP源码解析

作者: ibyr | 来源:发表于2017-03-11 09:19 被阅读79次

    欲了解AOP,需先了解Java动态代理;
    欲了解Java动态代理,先熟悉设计模式之代理模式。
    入门有道,先从简学。

    1. 设计模式 之 代理模式

    引言:消费者本应该直接从工厂购买商品,然而由于某些不可直达的原因,他选择从超市购买,超市代理了工厂销售商品的职责。并且,超市可以对商品进行再包装,工厂也可以专心于生产。

    proxyPattern.png
    /**
     * Common interface for Factory and Proxy.
     */
    public interface  ICommon {
        public void doSomething(String msg);
    }
    
    /**
     * True object to be proxied.
     */
    public class Factory implements ICommon {
        @Override
        public void doSomething(String msg) {
            System.out.println("Facotory do something: " + msg);
        }
    }
    
    /**
     * Proxy class
     */
    public class Proxy implements ICommon {
    
        private ICommon iCommon;
        public Proxy(ICommon iCommon) {
            this.iCommon = iCommon;
        }
        @Override
        public void doSomething(String msg) {
            this.iCommon.doSomething(msg);
        }
    
        public void proxyDoOtherThing() {
            System.out.println("Proxy can do other things.");
        }
    }
    
    /**
     * Client class
     */
    public class Client {
        public static void main(String[] args) {
            Factory factory = new Factory();
            ICommon proxy = new Proxy(factory);
            proxy.doSomething("Say Hello!");    // out: Facotory do something: Say Hello!
            proxy.proxyDoOtherThing();    // out: Proxy can do other things.
        }
    }
    
    
    
    • ** 拓展1 ** 程序设计原则之一:对修改关闭,对扩展开放
    • ** 拓展2 ** 代理模式理解:为其他对象提供一种代理以控制这个对象的访问
    • ** 拓展3 ** 通过代理层,有效减少对真实对象的直接访问,同时可以在Proxy层实现自定义的控制策略
    2. Java动态代理
    • Java动态代理与静态代理
    3. AOP设计

    [待续]

    相关文章

      网友评论

          本文标题:Spring AOP源码解析

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