1. 什么是Spring AOP?
OOP:核心是对象,关注点是将需求抽象成对象
AOP: 核心是方面,关注点是将共通处理提取,动态的作用到某一批对象方法上
2. AOP相关概念
a. 方面(Aspect)
方面指的是封装共通处理逻辑的组件,可以动态作用到目标组件方法
b. 切入点(Pointcut)
切入点用于指定哪些组件是目标,要追加方面Aspect组件
切入点表达式有以下几种
--方法限定方法表达式(哪些方法用方面组件处理)
execution([修饰符] 返回类型 方法名(参数) [throws 异常])
execution(* add*(..)) 只是限制了方法名必须以add开头
--第一个*表示不限制返回值类型
--add* 表示方法名
--(..) 表示0到多个参数
execution(* com.mscncn.dao.UserDao.insert*(..))
execution(* com.mscncn.dao.*.*(..))
--匹配com.mscncn.dao包下所有类的所有方法
execution(* com.mscncn.dao..*.*(..))
--匹配com.mscncn.dao包下,及其子包下得所有类的所有的方法
--类型限定(类型匹配,则类型中所有方法都启用方面组件处理)
within(包名.类型名)
within(com.mscncn.dao..*)
--匹配com.mscncn.dao包下,及其子包下得所有类的所有方法
--Bean名称限定(利用Bean组件的id或name值限制)
bean(idOrName名)
bean(costListController)
--匹配id或者name=costListController
bean(*Controller)
--匹配id或者name以Controller结尾的bean
c. 通知(Advice)
通知用于指定方面(Aspect)和目标组件之间的作用时机。
Spring提供以下几种的通知类型,对应不同作用时机。
前置通知: 先执行方面,再执行目标方法
后置通知: 先执行目标方法,不出异常,再执行方面
异常通知: 限制性目标方法,发生异常再执行方面
最终通知: 先执行目标方法,有无异常,都要执行方面
环绕通知: 先执行方法(前半部分),在执行目标方法,最后再执行方法(后半部分)
try{
//前置通知
//环绕通知前
目标组件
//环绕通知后
//后置通知
}catch(Exception e){
//异常通知
}finally{
//最终通知
}
4. Spring AOP的使用
--分析需求编写共通处理的方面组件(Aspect)
package com.mscncn.spring.ch03.aspect; public class LoggerBean { public void myBefore(){ System.out.println("前置通知"); } }
--分析需求编写切入点表达式(Pointcut)
需要切入到com.mscncn.spring.ch03包下,以及其子包下得所有类的所有方法
--分析需求选择通知类型(Advice)
前置通知
--分析完成后,配置AOP
<bean id="loggerBean" class="com.mscncn.spring.ch03.aspect.LoggerBean"></bean> <bean id="app" class="com.mscncn.spring.ch03.App"></bean> <aop:config> <!-- 将loggerBean指定为aspect组件 --> <aop:aspect id="loggerAspect" ref="loggerBean"> <!-- 指定通知类型 --> <aop:before method="myBefore" pointcut="within(com.mscncn.spring.ch03.App)"/> </aop:aspect> </aop:config>
测试:
package com.mscncn.spring.ch03; /** * Hello world! * */ public class App { public void ma() { System.out.println("Hello World!"); } }
package com.mscncn.spring.ch03.aspect; public class LoggerBean { public void myBefore(){ System.out.println("前置通知"); } }
@Test public void test1(){ ac.getBean("app",App.class).ma(); }
注意:当springMVC 使用springAOP那么配置信息必须写在SpringMVC的配置文件中。
Spring AOP环绕通知时,必须有返回值。
相关推荐
本教程将带你了解Spring AOP的基础知识,帮助你入门这一强大技术。 ### 一、什么是AOP AOP是一种编程范式,旨在解决程序中的横切关注点问题,这些关注点通常与业务逻辑无关,但又需要在多个地方被调用,如日志记录...
在这个入门实例中,我们将深入理解Spring AOP如何实现简单日志记录。 首先,AOP的核心概念包括切面(Aspect)、通知(Advice)、连接点(Join Point)、切入点(Pointcut)和织入(Weaving)。切面是AOP中的核心...
首先,我们需要理解Spring AOP的基础概念。AOP的核心是切点(Pointcut),它定义了关注点在何处应用。在Spring中,我们通常使用表达式或者注解来定义切点。例如,我们可以使用`@Before`、`@After`、`@Around`、`@...
现在,我们回到主题——"springaop依赖的jar包"。在Spring 2.5.6版本中,使用Spring AOP通常需要以下核心jar包: - `spring-aop.jar`:这是Spring AOP的核心库,包含了AOP相关的类和接口。 - `spring-beans.jar`:...
### Spring AOP 入门详解 #### 一、Spring AOP 概述 Spring AOP(Aspect Oriented Programming,面向切面编程)是Spring框架的一个关键特性,它为开发者提供了在运行时动态添加代码(即横切关注点或切面)到已有...
Spring AOP就是基于这些接口进行设计的,因此这个库是Spring AOP和其他AOP实现之间协作的基础。 在实际使用中,我们需要在项目的类路径下包含这些Jar包,并在Spring配置文件中启用AOP支持。例如,可以通过以下XML...
了解这些基础知识可以帮助我们更好地掌握 Spring AOP 的实现细节。在分析源码时,可以参考作者的源码注释和相关文章,以便更深入地理解每一步操作。 总的来说,Spring AOP 通过动态代理技术实现了切面的插入,使得...
Spring AOP是在Spring框架的基础上实现的一种面向方面编程机制。 1. **方面(Aspect)**:这是AOP的核心概念之一,指代一个关注点的模块化,该关注点可能会横切多个对象。例如事务管理就是一个典型的横切关注点,...
### Spring AOP中文教程知识点详解 #### 一、AOP概览 面向切面编程(Aspect-Oriented Programming,简称AOP)是一种编程范式,它允许开发者将横切关注点(cross-cutting concerns)从业务逻辑中分离出来。横切关注...
3、对spring aop认识模糊的,不清楚如何实现Java 自定义注解的 4、想看spring aop 注解实现记录系统日志并入库等 二、能学到什么 1、收获可用源码 2、能够清楚的知道如何用spring aop实现自定义注解以及注解的逻辑...
综上所述,spring AOP依赖的这三个jar包构成了Spring框架面向切面编程的基础,它们共同协作,提供了便捷、高效和强大的AOP能力,帮助开发者实现代码的解耦,提高可维护性和复用性。在实际开发中,理解并熟练运用这些...
本教程将通过一个简单的Spring AOP入门案例,帮助初学者理解这一概念。 ### 一、AOP基础 1. **切面(Aspect)**:切面是关注点的模块化,它封装了跨越多个对象的行为或数据。在Spring AOP中,切面可以由一个类定义...
在提供的 `lib` 压缩包中,应包含 Spring AOP 和 Spring IOC 相关的 jar 包,如 `spring-aop-x.x.x.jar` 和 `spring-context-x.x.x.jar` 等,它们是使用这两个功能的基础。请确保引入正确的版本,并正确配置到项目的...
总的来说,这个压缩文件"spring aop用到jar包.rar"包含了实现Spring AOP所需的一系列核心库,它们共同构成了Spring AOP的基础架构,使得我们可以方便地编写和应用切面,提高代码的可维护性和可扩展性。在实际项目中...
Spring AOP 基础概念** - **切面(Aspect)**:切面是关注点的模块化,比如日志、事务管理等,这些关注点可以被定义为一个独立的模块,称为切面。 - **通知(Advice)**:在特定连接点上执行的代码,也就是切面要...
**Spring AOP 简介** Spring AOP(Aspect Oriented Programming,面向切面编程)是Spring框架的一个重要模块,它扩展了传统的面向对象编程,允许开发者定义“横切关注点”(cross-cutting concerns),如日志、事务...
一、Spring AOP基础知识 1. **什么是AOP**:AOP是一种编程范式,用于处理系统中的横切关注点,即那些跨越多个类或方法的共同功能,如事务管理、日志记录等。AOP通过切面(Aspect)将这些关注点与业务逻辑分离,提高...
Spring Aop基于xml练习
Spring AOP和Hessian是两个在Java开发中广泛使用的技术,尤其在分布式系统和服务治理中。下面将详细解释这两个概念以及它们如何结合使用。 **Spring AOP(面向切面编程)** Spring AOP是Spring框架的一个重要组成...
- `spring-core.jar`:Spring的基础库,提供核心工具类和IoC容器。 - `spring-context.jar`:提供了AOP、事件、国际化等功能,是Spring的核心部分。 - `spring-expression.jar`(SpEL):Spring表达式语言,用于...