Spring-AOP概论

        AOP是OOP的一种实现,将业务代码进行隔离,降低逻辑代码之间的耦合度,提高代码复用率,经常用在日志处理,权限控制,事务处理,Struts2的过滤器拦截器等。我们首先通过学习动态代理认识AOP原理,然后进行AOP概念的论述。


       下面代码通过实现InvocationHandler接口实现代理控制接口:

public class LogProxy implements InvocationHandler {
	private Logger logger=Logger.getLogger(this.getClass().getName());
	
	private Object delegate;  //要实现的代理对象
	public Object bind(Object delegate){
		this.delegate=delegate;
		//返回代理类
		return Proxy.newProxyInstance(delegate.getClass().getClassLoader(), delegate.getClass().getInterfaces(),this);
	}
	
	@Override
	public Object invoke(Object proxy, Method method, Object[] args)
			throws Throwable {
		Object result=null;
		try{
			logger.log(Level.INFO,args[0]+"开始审核数据..."); 
			result=method.invoke(delegate, args); 
			logger.log(Level.INFO,args[0]+"审核数据结束...");
		}catch(Exception e){
			logger.log(Level.INFO,e.toString());
		}
		return result;
	}

}

       方法调用时首先调用bind()方法,创建类的代理对象,这样通过使用代理对象调用原实例对象方法,就会执行重写的invoke方法,这样我们可以通过在调用真正执行的方法前后添加额外代码。


             

       学习AOP我们必须要学会三个概念,pointcut,Advice和Advisor。pointcut是join point集合,定义了程序代码中要注入的advice位置的集合,指明Advice在什么条件下触发,它分为动态,静态和自定义三种类型,静态切入点不考虑参数,当代码第一次切入后被缓存起来,下次执行该切入点不用重新创建,动态切入点由于有参数影响,不能缓存;Advice是在当前业务逻辑代码中要切入的代码,分别为Interception Around(当前业务逻辑前后建立切入方法),Before(当前业务逻辑之前建立切入方法),atterreturning(当前业务逻辑之后建立切入方法),throw(代码报错时建立切入方法)。Advisor将Advice和pointcut连接到一起。


       

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 10
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值