AOP:aspect oriented programming 面向切面编程 将一个功能做成一个切面类,要用的时候,动态的置入到目标中的过程。
Spring的代理有两种,分别为动态代理和静态代理
现在看静态代理
1、ProductBiz接口,定义一个addProduct 业务方法
package com.yc.biz;
public interface ProductBiz {
public void addProduct();
}
2、ProductBizImpl实现类
package com.yc.biz;
//真实主题
public class ProductBizImpl implements ProductBiz {
@Override
public void addProduct() {
System.out.println("**********************");
System.out.println("添加产品");
System.out.println("**********************");
}
}
如果我们需要在添加产品前进行权限验证,那么这个时候我们需要添加代理。
代理类
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("=================");
}
}
测试类:
package com.yc.biz;
public class Test {
public static void main(String[] args) {
ProductBiz pb=new ProductBizRightProxy(new ProductBizImpl());
pb.addProduct();
}
}
输出: