Spring AOP详解:四种通知类型与切入点匹配
1星 需积分: 23 178 浏览量
更新于2024-09-16
收藏 43KB DOC 举报
"Spring AOP四种创建通知(拦截器)类型"
在Spring AOP(面向切面编程)中,主要关注的是如何在不修改原有代码的情况下,插入额外的功能,即横切关注点。Spring AOP通过代理模式来实现这一目标,它提供了四种不同的通知(Advice)类型,允许我们在方法执行的不同阶段插入自定义的行为。
1. 前置通知(Before Advice):
这种类型的拦截器在目标方法被调用之前执行。它适用于需要在方法执行前进行预处理的情况,例如权限检查、日志记录等。要实现前置通知,类需要实现`MethodBeforeAdvice`接口,并覆盖`before`方法。
2. 后置通知(After Returning Advice):
后置通知在目标方法正常执行完毕并返回之后执行。它通常用于清理工作,例如关闭数据库连接。实现后置通知的类需实现`AfterReturningAdvice`接口,并覆盖`afterReturning`方法。
3. 前后通知(Around Advice):
前后通知是最强大的通知类型,它允许在方法调用的整个生命周期内进行干预,包括决定是否执行目标方法以及如何处理返回值。实现前后通知的类需要实现`MethodInterceptor`接口,并覆盖`invoke`方法。在`invoke`方法中,我们可以控制方法的执行过程,如添加额外逻辑、改变返回结果等。
4. 异常通知(Throws Advice):
异常通知在目标方法抛出异常时执行,它可以捕获并处理异常。实现异常通知的类需实现`.ThrowsAdvice`接口,然后提供一个或多个处理特定异常的方法。
然而,以上通知类型的一个局限性是,它们无法针对特定的方法进行拦截,只能对整个类的所有方法进行拦截。为了解决这个问题,Spring AOP引入了“切入点”(PointCut)和“引入通知”(Advisor)的概念。
“切入点”是精确指定哪些方法应该被拦截的规则。它可以基于方法签名、注解或其他条件进行匹配。Spring提供了多种切入点实现,如基于名字匹配的`NameMatchMethodPointcutAdvisor`和基于正则表达式的`RegExpPointcutAdvisor`。切入点通常是静态的,意味着它们在代理创建时确定,而非每次方法调用时动态生成。
在实际应用中,我们需要创建业务接口和实现类,然后定义相应的通知和切入点。例如,我们可能有一个`Shopping`接口,包含`buySomething`、`buyAnything`和`testException`方法,对应的业务实现类会实现这些方法。然后,我们可以创建一个或多个Advisor,每个Advisor包含一个切入点和一个通知,这样就可以精确控制哪些方法会被哪个通知拦截。
总结来说,Spring AOP的四种通知类型提供了灵活的方式来插入横切关注点,而切入点和引入通知则使得这种插入更加精确和可控,从而实现了面向切面的编程。通过这些机制,开发者可以编写出更模块化、更易于维护的代码,同时保持业务逻辑的清晰和独立。
点击了解资源详情
点击了解资源详情
点击了解资源详情
2014-02-07 上传
2020-08-30 上传
2013-05-13 上传
2021-10-07 上传
2022-01-24 上传
nigfire
- 粉丝: 6
- 资源: 183
最新资源
- Accuinsight-1.0.4-py2.py3-none-any.whl.zip
- yama:Yama的编译器,一种面向对象的微控制器语言,例如ARM Cortex-M和AVR
- ap-event-lib:事件框架库
- 队列分析
- docker-compose2.172下载后拷贝到/usr/local/bin下
- webstore
- Employee-Summary
- media-source-demo:媒体源演示
- 家:普拉特姆学院
- LilSteve:第175章
- tilde-world
- Accuinsight-1.0.25-py2.py3-none-any.whl.zip
- 标题栏随着RecyclerView滚动背景渐变
- 浏览器自定义查看pdf文件.rar
- 直接序列扩频(DS SS):这是直接序列扩频的代码。-matlab开发
- flutter_dylinkios_sample:使用Dart的示例项目