Spring AOP中@Around注解如何实现环绕通知,覆盖目标方法执行前后逻辑?
- 内容介绍
- 文章标签
- 相关推荐
本文共计2211个文字,预计阅读时间需要9分钟。
python@Arounddef logBeforeAndAfter(method: Method, args: Args, kwargs: Kwargs): print(Before method execution: Args={}, Kwargs={}.format(args, kwargs)) result=method(*args, **kwargs) print(After method execution: Response={}.format(result)) return result
@Around注解可以用来在调用一个具体方法前和调用后来完成一些具体的任务。
比如我们想在执行controller中方法前打印出请求参数,并在方法执行结束后来打印出响应值,这个时候,我们就可以借助于@Around注解来实现;
再比如我们想在执行方法时动态修改参数值等
类似功能的注解还有@Before等等,用到了Spring AOP切面思想,Spring AOP常用于拦截器、事务、日志、权限验证等方面。
完整演示代码如下:
需要说明的是,在以下例子中,我们即可以只用@Around注解,并设置条件,见方法run1();也可以用@Pointcut和@Around联合注解,见方法pointCut2()和run2(),这2种用法是等价的。如果我们还想利用其进行参数的修改,则调用时必须用joinPoint.proceed(Object[] args)方法,将修改后的参数进行回传。如果用joinPoint.proceed()方法,则修改后的参数并不会真正被使用。
本文共计2211个文字,预计阅读时间需要9分钟。
python@Arounddef logBeforeAndAfter(method: Method, args: Args, kwargs: Kwargs): print(Before method execution: Args={}, Kwargs={}.format(args, kwargs)) result=method(*args, **kwargs) print(After method execution: Response={}.format(result)) return result
@Around注解可以用来在调用一个具体方法前和调用后来完成一些具体的任务。
比如我们想在执行controller中方法前打印出请求参数,并在方法执行结束后来打印出响应值,这个时候,我们就可以借助于@Around注解来实现;
再比如我们想在执行方法时动态修改参数值等
类似功能的注解还有@Before等等,用到了Spring AOP切面思想,Spring AOP常用于拦截器、事务、日志、权限验证等方面。
完整演示代码如下:
需要说明的是,在以下例子中,我们即可以只用@Around注解,并设置条件,见方法run1();也可以用@Pointcut和@Around联合注解,见方法pointCut2()和run2(),这2种用法是等价的。如果我们还想利用其进行参数的修改,则调用时必须用joinPoint.proceed(Object[] args)方法,将修改后的参数进行回传。如果用joinPoint.proceed()方法,则修改后的参数并不会真正被使用。

