原文http://jinnianshilongnian.iteye.com/blog/1418596
在学习AOP之前要先了解几个概念:
- 连接点(Jointpoint):表示需要在程序中插入横切关注点的扩展点,连接点可能是类初始化、方法执行、方法调用、字段调用或处理异常等等,Spring只支持方法执行连接点,在AOP中表示为“在哪里干”;
- 切入点(Pointcut):选择一组相关连接点的模式,即可以认为连接点的集合,Spring支持perl5正则表达式和AspectJ切入点模式,Spring默认使用AspectJ语法,在AOP中表示为“在哪里干的集合”;
- 通知(Advice):在连接点上执行的行为,通知提供了在AOP中需要在切入点所选择的连接点处进行扩展现有行为的手段;包括前置通知(before advice)、后置通知(after advice)、环绕通知(around advice),在Spring中通过代理模式实现AOP,并通过拦截器模式以环绕连接点的拦截器链织入通知;在AOP中表示为“干什么”;
- 方面/切面(Aspect):横切关注点的模块化,比如上边提到的日志组件。可以认为是通知、引入和切入点的组合;在Spring中可以使用Schema和@AspectJ方式进行组织实现;在AOP中表示为“在哪干和干什么集合”;
- 引入(inter-type declaration):也称为内部类型声明,为已有的类添加额外新的字段或方法,Spring允许引入新的接口(必须对应一个实现)到所有被代理对象(目标对象), 在AOP中表示为“干什么(引入什么)”;
- 目标对象(Target Object):需要被织入横切关注点的对象,即该对象是切入点选择的对象,需要被通知的对象,从而也可称为“被通知对象”;由于Spring AOP 通过代理模式实现,从而这个对象永远是被代理对象,在AOP中表示为“对谁干”;
- AOP代理(AOP Proxy):AOP框架使用代理模式创建的对象,从而实现在连接点处插入通知(即应用切面),就是通过代理来对目标对象应用切面。在Spring中,AOP代理可以用JDK动态代理或CGLIB代理实现,而通过拦截器模型应用切面。
- 织入(Weaving):织入是一个过程,是将切面应用到目标对象从而创建出AOP代理对象的过程,织入可以在编译期、类装载期、运行期进行。
在AOP中,通过切入点选择目标对象的连接点,然后在目标对象的相应连接点处织入通知,而切入点和通知就是切面(横切关注点),而在目标对象连接点处应用切面的实现方式是通过AOP代理对象,如图所示。
接下来再让我们具体看看Spring有哪些通知类型:
- 前置通知(Before Advice):在切入点选择的连接点处的方法之前执行的通知,该通知不影响正常程序执行流程(除非该通知抛出异常,该异常将中断当前方法链的执行而返回)。
- 后置通知(After Advice):在切入点选择的连接点处的方法之后执行的通知,包括如下类型的后置通知:
- 后置返回通知(After returning Advice):在切入点选择的连接点处的方法正常执行完毕时执行的通知,必须是连接点处的方法没抛出任何异常正常返回时才调用后置通知。
- 后置异常通知(After throwing Advice): 在切入点选择的连接点处的方法抛出异常返回时执行的通知,必须是连接点处的方法抛出任何异常返回时才调用异常通知。
- 后置最终通知(After finally Advice): 在切入点选择的连接点处的方法返回时执行的通知,不管抛没抛出异常都执行,类似于Java中的finally块。
- 环绕通知(Around Advices):环绕着在切入点选择的连接点处的方法所执行的通知,环绕通知可以在方法调用之前和之后自定义任何行为,并且可以决定是否执行连接点处的方法、替换返回值、抛出异常等等。
相关推荐
网上找了很多例子多数都不能运行。包括after,before,round,throw切入,可对类直接拦截,不需要定义接口文件,自己研究了2天整理出来的。 Spring AOP 的完整例子,可直接运行。带jar包。
Spring 框架是 Java 开发中的核心框架之一,它为构建企业级应用程序提供了全面的解决方案。本资源包含了 Spring 框架多个关键模块的代码示例,旨在帮助学习者深入理解和实践 Spring 的核心功能。 1. **Spring AOP...
接下来,Spring框架是Java领域的一个全功能容器,用于处理对象的依赖注入、AOP(面向切面编程)、事务管理等。在多对多和多对一的关系中,Spring可以帮助我们管理对象之间的关联,并通过@Autowired注解自动装配依赖...
总之,Spring.NET 是一个强大的 .NET 开发框架,通过 IoC 和 AOP 提供了灵活的应用程序结构和模块化设计,使开发者能够构建更易于测试、扩展和维护的软件系统。通过掌握 Spring.NET 的核心概念和实践,开发者可以...
7. Spring AOP:尽管文档主要是围绕JDK动态代理展开的,但文档还提及了Spring AOP框架,这是一个更为高级和流行的AOP实现。Spring AOP同样基于代理模式,但支持在方法调用前后加入额外的行为(advice),且能够与...
spring boot demo 是一个Spring Boot、Spring Cloud的项目示例,根据市场主流的后端技术,共集成了30+个demo,未来将持续更新。该项目包含helloworld(快速入门)、web(ssh项目快速搭建)、aop(切面编程)、data-redis...
- **替代教程案例**:通过一个婚礼 RSVP 应用的例子来展示 Spring Roo 的各项功能。 - **步骤详解**: - **启动项目**:初始化项目结构。 - **创建实体和字段**:定义数据模型。 - **集成测试**:编写测试用例以...
项目创建完成后,我们需要在WEB-INF目录下创建一个名为lib的文件夹,然后将所需的Spring相关jar包(如spring-aop、spring-beans、spring-context、spring-core、spring-expression、spring-web、spring-webmvc以及...
- 解释Spring的IoC和AOP概念并给出实际应用例子 - 描述一个完整的Struts 2请求处理流程 - Hibernate的懒加载和立即加载的区别,以及如何配置 - MyBatis是如何通过XML或注解实现动态SQL的 - SSHM整合中,如何...
另外的问题就是spring和hibernate整合的问题了,当时也是一股脑的将hibernate和spring的包全导入进来,然后发布,启动tomcat,查看报错的问题,这个方面到没有出现版本差异的问题,典型的就是缺包,然后报找不到类,...
1. **Spring框架**:Spring是Java企业级应用的核心框架,提供了IOC(Inversion of Control,控制反转)和AOP(Aspect-Oriented Programming,面向切面编程)两大核心特性。在CRM项目中,Spring负责管理各个组件的...
1. `applicationContext.xml`:Spring的配置文件,用于定义bean、事务管理和AOP(面向切面编程)等。在实际应用中,你需要根据项目需求来定制这个文件,例如配置数据源、SessionFactory、事务管理规则等。 2. ...
Spring是一个强大的框架,提供依赖注入、AOP(面向切面编程)等功能,而MyBatis则是一个轻量级的持久层框架,专注于SQL映射和数据库交互。将两者整合可以实现高效、灵活的数据访问和业务逻辑处理。 首先,Spring...
【标题】"hibernate例子程序SSH.part01.rar"是一个关于Hibernate框架的示例程序,结合了Spring、Struts和Hibernate(SSH)这三大Java Web开发中的主流框架。这个压缩包是尚学堂提供的,尚学堂是一家知名的IT教育机构...
【SSHLogin实例(下载)[整理].pdf】文档主要介绍了MVC设计模式以及SSH(Struts+Spring+Hibernate)框架在Web应用中的使用,包括各组件的功能、优缺点以及一个简单的SSH登录实例。 **MVC模式** MVC模式是一种常见的...
"WebAppTest"项目是一个实践性的例子,展示了如何结合Spring MVC和Maven来构建现代的Java Web应用。通过学习和实践这个项目,开发者可以掌握Spring MVC的使用技巧,理解Maven的依赖管理和构建流程,进一步提升Web...
3. **框架**(framework):压缩包中可能包含了一些常用的Java框架,如Spring Framework,它是一个应用开发框架,支持AOP(面向切面编程)、IoC(依赖注入)、MVC(模型-视图-控制器)等。Spring的注解(spring-...
14. **Spring框架**:熟悉Spring的核心概念,如依赖注入(DI)和面向切面编程(AOP),以及Spring Boot和Spring MVC的使用。 15. **数据库操作**:掌握SQL语言,了解JDBC的使用,以及ORM框架如Hibernate和MyBatis的...
1. Spring框架:依赖注入、AOP、事务管理、Spring Boot等核心概念。 2. MyBatis:SQL映射、动态SQL、缓存机制,以及MyBatis-Spring的整合。 3. 数据库:SQL优化、索引原理、事务与锁机制,以及NoSQL数据库的使用。 4...
Spring框架是Java Web开发中的重要组件,它提供了依赖注入(DI)和面向切面编程(AOP)等功能,简化了应用程序的构建和管理。Spring MVC是Spring框架的一部分,专门用于Web开发,提供了一种模型-视图-控制器(MVC)...