没有合适的资源?快使用搜索试试~ 我知道了~
SpringAOP原理及拦截器.pdf
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 193 浏览量
2022-01-13
16:13:38
上传
评论
收藏 79KB PDF 举报
温馨提示
试读
29页
SpringAOP原理及拦截器.pdf
资源推荐
资源详情
资源评论
实用标准文档
文案大全
原理
AOP(Aspect Oriented Programming) ,也就是面向方面编程的技术。
AOP基于 IoC 基础,是对 OOP的有益补充。
AOP将应用系统分为两部分,核心业务逻辑( Core business
concerns )及横向的通用逻辑,也就是所谓的方面 Crosscutting
enterprise concerns ,例如,所有大中型应用都要涉及到的持久化管
理( Persistent )、事务管理( Transaction Management )、安全管
理(Security )、日志管理( Logging )和调试管理( Debugging)等。
AOP正在成为软件开发的下一个光环。使用 AOP,你可以将处理
aspect 的代码注入主程序,通常主程序的主要目的并不在于处理这些
aspect 。AOP可以防止代码混乱。
Spring framework 是很有前途的 AOP技术。作为一种非侵略性的、
轻型的 AOP framework,你无需使用预编译器或其他的元标签,便可
以在 Java 程序中使用它。这意味着开发团队里只需一人要对付 AOP
framework ,其他人还是像往常一样编程。
AOP概念
让我们从定义一些重要的 AOP概念开始。
— 方面( Aspect ):一个关注点的模块化,这个关注点实现可能
另外横切多个对象。 事务管理是 J2EE应用中一个很好的横切关注点例
子。方面用 Spring 的 Advisor 或拦截器实现。
— 连接点( Joinpoint ):程序执行过程中明确的点,如方法的
调用或特定的异常被抛出。
— 通知( Advice ):在特定的连接点, AOP框架执行的动作。各
种类型的通知包括“ around”、“ before ”和“ throws ”通知。通知
类型将在下面讨论。 许多 AOP框架包括 Spring 都是以拦截器做通知模
型,维护一个“围绕”连接点的拦截器链。
— 切入点( Pointcut ):指定一个通知将被引发的一系列连接点
的集合。 AOP框架必须允许开发者指定切入点,例如,使用正则表达
式。
— 引入(Introduction ):添加方法或字段到被通知的类。 Spring
允许引入新的接口到任何被通知的对象。例如,你可以使用一个引入
使任何对象实现 IsModified 接口,来简化缓存。
— 目标对象( Target Object ):包含连接点的对象,也被称作
被通知或被代理对象。
— AOP代理( AOP Proxy): AOP框架创建的对象,包含通知。在
Spring 中, AOP代理可以是 JDK动态代理或 CGLIB代理。
— 编织( Weaving):组装方面来创建一个被通知对象。这可以
在编译时完成(例如使用 AspectJ 编译器),也可以在运行时完成。
Spring 和其他纯 Java AOP 框架一样,在运行时完成织入。
各种通知类型包括:
— Around 通知:包围一个连接点的通知,如方法调用。这是
最强大的通知。 Aroud 通知在方法调用前后完成自定义的行为,它们
负责选择继续执行连接点或通过返回它们自己的返回值或抛出异常来
短路执行。
— Before 通知:在一个连接点之前执行的通知,但这个通知
不能阻止连接点前的执行(除非它抛出一个异常)。
— Throws 通知:在方法抛出异常时执行的通知。 Spring 提供
强制类型的 Throws 通知,因此你可以书写代码捕获感兴趣的异常 (和
它的子类),不需要从 Throwable 或 Exception 强制类型转换。
— After returning 通知:在连接点正常完成后执行的通知,
例如,一个方法正常返回,没有抛出异常。
Around 通知是最通用的通知类型。 大部分基于 拦截的 AOP框架(如
Nanning 和 Jboss 4 )只提供 Around 通知。
如同 AspectJ ,Spring 提供所有类型的通知,我们推荐你使用最
为合适的通知类型来实现需要的行为。例如,如果只是需要用一个方
法的返回值来更新缓存,你最好实现一个 after returning 通知,而
不是 around 通知,虽然 around 通知也能完成同样的事情。使用最合
适的通知类型使编程模型变得简单,并能减少潜在错 误。例如,你不
需要调用在 around 通知中所需使用的 MethodInvocation 的 proceed()
方法,因此就调用失败。
切入点的概念是 AOP的关键,它使 AOP区别于其他使用拦截的技
术。切入点使通知独立于 OO的层次选定目标。例如,提供声明式事务
管理的 around 通知可以被应用到跨越多个对象的一组方法上。 因此
切入点构成了 AOP的结构要素。
拦截器(也称拦截机)
拦截机 (Interceptor), 是 AOP ( Aspect- Oriented
Programming) 的另一种叫法。 AOP本身是一门语言,只不过我们使用
的是基于 JAVA的集成到 Spring 中的 SpringAOP 。同样,我们将通过
我们的例子来理解陌生的概念。
接口类
Java 代码
1. <span style="font-size: medium;">package com.test.TestSprin
g3;
2.
3. public interface UserService // 被拦截的接口
4. ...{
5. public void printUser(String user);
6. }
7. </span>
实现类
Java 代码
1. <span style="font-size: medium;">package com.test.TestSprin
g3;
2.
3. public class UserServiceImp implements UserService // 实
现 UserService 接口
4. ...{
5. public void printUser(String user) ...{
6. System.out.println("printUser user:" + user
);// 显示 user
7. }
8. }
9.
10.</span>
AOP拦截器
Java 代码
1. <span style="font-size: medium;">package com.test.TestSprin
g3;
2.
3. import org.aopalliance.intercept.MethodInterceptor;
4. import org.aopalliance.intercept.MethodInvocation;
5.
6. public class UserInterceptor implements MethodInterceptor
7. // AOP方法拦截器
8. ...{
9.
10. public Object invoke(MethodInvocation arg0) throws
Throwable ...{
11.
12. try ...{
13.
14. if (arg0.getMethod().getName().equals
("printUser"))
15. // 拦截方法是否是 UserService 接口的
printUser 方法
16. ...{
剩余28页未读,继续阅读
资源评论
weixin_50556117
- 粉丝: 0
- 资源: 10万+
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功