您的位置:首页 > 编程语言 > Java开发

Spring AOP 学习之静态代理

2015-08-06 19:49 381 查看
AOP:aspect oriented programming 面向切面编程 将一个功能做成一个切面类,要用的时候,动态的置入到目标中的过程。

Spring的代理有两种,分别为动态代理和静态代理

现在看静态代理

1、ProductBiz接口,定义一个addProduct 业务方法

[code]package com.yc.biz;

public interface ProductBiz {
    public void addProduct();
}


2、ProductBizImpl实现类

[code]package com.yc.biz;

//真实主题
public class ProductBizImpl implements ProductBiz {

    @Override
    public void addProduct() {
        System.out.println("**********************");
        System.out.println("添加产品");
        System.out.println("**********************");
    }

}


如果我们需要在添加产品前进行权限验证,那么这个时候我们需要添加代理。

代理类

[code]package com.yc.biz;

//代理类
public class ProductBizRightProxy implements ProductBiz {
    private ProductBiz productBiz;

    public ProductBizRightProxy(ProductBiz productBiz) {
        this.productBiz=productBiz;
    }
    @Override
    public void addProduct() {
        //加入检查权限的功能//前置增强
        check();
        this.productBiz.addProduct();
    }

    private void check(){
        System.out.println("=================");
        System.out.println("检查权限");
        System.out.println("=================");
    }

}


测试类:

[code]package com.yc.biz;

public class Test {
    public static void main(String[] args) {
        ProductBiz pb=new ProductBizRightProxy(new ProductBizImpl());
        pb.addProduct();
    }
}


输出:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: