Spring------AOP

Spring AOP

  • Advice
  • Aspectj

Advice 通知

  • MethodBeforeAdvice 前置通知

  • AfterReturingAdvice 后置通知

  • MethodInterceptor 环绕通知

  • ThrowAdvice 异常抛出通知

  • AfterAdvice 最终通知

MethodBeforeAdvice 前置通知

public interface MethodBeforeAdvice extends BeforeAdvice {

	/**
		method : 代理的 目标方法
		args :   代理的 目标方法需要的参数 
		target : 目标对象
	*/
	void before(Method method, Object[] args, @Nullable Object target) throws Throwable ;

}

MethodInterceptor 环绕通知

public interface MethodInterceptor extends Interceptor {
	
	// invoke 返回的结果 代表 目标方法 返回的结果,结果可以被切面修改 
	Object invoke(MethodInvocation invocation) throws Throwable;
}

MethodInvocation 中常见的方法

  • getMethod : 获取 目标方法

  • getArguments : 获取 目标方法需要的参数列表

  • getThis() : 获取代理的目标对象

  • proceed() : 调用目标对象的方法,返回方法的结果, 在 proceed() 方法前 执行的的代码是 前置通知
    在 proceed() 方法后执行的代码 是后置通知,所以 MethodInterceptor 被称为 环绕通知

AfterReturingAdvice

public interface AfterReturningAdvice extends AfterAdvice {

	/**
		returnValue : 代表 目标方法 返回的 结果 
	*/
	void afterReturning(Object returnValue, Method method, Object[] args, 
			Object target) throws Throwable;
}

ThrowsAdvice 异常抛出通知

该接口 是一个 空接口,里面没有任何的方法, 但是如果希望在目标方法抛出异常的时候,进行处理,则需要提供对应的处理方法

public void afterThrowing(Exception ex)

public void afterThrowing(RemoteException)

public void afterThrowing(Method method, Object[] args, Object target, Exception ex)

public void afterThrowing(Method method, Object[] args, Object target, ServletException ex)

方法中需要提供一个 返回 void 且 方法名为 afterThrowing的方法
在方法中 至少提供一个Exception类型的参数,但该参数最为方法的最后一个参数
可以在方法中,添加 method, args, target 三个参数

ProxyFactoryBean


	
	

	
	
		
			timeAdvice
		
	

BeanNameAutoProxyCreator


	
	
	
		
			logAdvice
			timeAdvice
		
	

你可能感兴趣的:(spring,java,后端)