`
pwpw1218
  • 浏览: 9223 次
社区版块
存档分类
最新评论

Spring AOP入门教程

阅读更多

1. 什么是Spring AOP?

 Aspect Oriented Programming : 面向方面编程

   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入门教程

    本教程将带你了解Spring AOP的基础知识,帮助你入门这一强大技术。 ### 一、什么是AOP AOP是一种编程范式,旨在解决程序中的横切关注点问题,这些关注点通常与业务逻辑无关,但又需要在多个地方被调用,如日志记录...

    spring AOP入门实例

    在这个入门实例中,我们将深入理解Spring AOP如何实现简单日志记录。 首先,AOP的核心概念包括切面(Aspect)、通知(Advice)、连接点(Join Point)、切入点(Pointcut)和织入(Weaving)。切面是AOP中的核心...

    Spring AOP完整例子

    首先,我们需要理解Spring AOP的基础概念。AOP的核心是切点(Pointcut),它定义了关注点在何处应用。在Spring中,我们通常使用表达式或者注解来定义切点。例如,我们可以使用`@Before`、`@After`、`@Around`、`@...

    spring aop依赖jar包

    现在,我们回到主题——"springaop依赖的jar包"。在Spring 2.5.6版本中,使用Spring AOP通常需要以下核心jar包: - `spring-aop.jar`:这是Spring AOP的核心库,包含了AOP相关的类和接口。 - `spring-beans.jar`:...

    Spring AOP 入门作者:廖雪峰

    ### Spring AOP 入门详解 #### 一、Spring AOP 概述 Spring AOP(Aspect Oriented Programming,面向切面编程)是Spring框架的一个关键特性,它为开发者提供了在运行时动态添加代码(即横切关注点或切面)到已有...

    死磕Spring之AOP篇 - Spring AOP两种代理对象的拦截处理(csdn)————程序.pdf

    了解这些基础知识可以帮助我们更好地掌握 Spring AOP 的实现细节。在分析源码时,可以参考作者的源码注释和相关文章,以便更深入地理解每一步操作。 总的来说,Spring AOP 通过动态代理技术实现了切面的插入,使得...

    Spring AOP面向方面编程原理:AOP概念

    Spring AOP是在Spring框架的基础上实现的一种面向方面编程机制。 1. **方面(Aspect)**:这是AOP的核心概念之一,指代一个关注点的模块化,该关注点可能会横切多个对象。例如事务管理就是一个典型的横切关注点,...

    Spring AOP中文教程

    ### Spring AOP中文教程知识点详解 #### 一、AOP概览 面向切面编程(Aspect-Oriented Programming,简称AOP)是一种编程范式,它允许开发者将横切关注点(cross-cutting concerns)从业务逻辑中分离出来。横切关注...

    spring aop 自定义注解保存操作日志到mysql数据库 源码

    3、对spring aop认识模糊的,不清楚如何实现Java 自定义注解的 4、想看spring aop 注解实现记录系统日志并入库等 二、能学到什么 1、收获可用源码 2、能够清楚的知道如何用spring aop实现自定义注解以及注解的逻辑...

    spring AOP依赖三个jar包

    综上所述,spring AOP依赖的这三个jar包构成了Spring框架面向切面编程的基础,它们共同协作,提供了便捷、高效和强大的AOP能力,帮助开发者实现代码的解耦,提高可维护性和复用性。在实际开发中,理解并熟练运用这些...

    最简单的SpringAOP入门案例

    本教程将通过一个简单的Spring AOP入门案例,帮助初学者理解这一概念。 ### 一、AOP基础 1. **切面(Aspect)**:切面是关注点的模块化,它封装了跨越多个对象的行为或数据。在Spring AOP中,切面可以由一个类定义...

    spring AOP 引入jar包,spring IOC 引入Jar包

    在提供的 `lib` 压缩包中,应包含 Spring AOP 和 Spring IOC 相关的 jar 包,如 `spring-aop-x.x.x.jar` 和 `spring-context-x.x.x.jar` 等,它们是使用这两个功能的基础。请确保引入正确的版本,并正确配置到项目的...

    spring aop用到jar包.rar

    总的来说,这个压缩文件"spring aop用到jar包.rar"包含了实现Spring AOP所需的一系列核心库,它们共同构成了Spring AOP的基础架构,使得我们可以方便地编写和应用切面,提高代码的可维护性和可扩展性。在实际项目中...

    springAop的配置实现

    Spring AOP 基础概念** - **切面(Aspect)**:切面是关注点的模块化,比如日志、事务管理等,这些关注点可以被定义为一个独立的模块,称为切面。 - **通知(Advice)**:在特定连接点上执行的代码,也就是切面要...

    Spring AOP简单demo

    **Spring AOP 简介** Spring AOP(Aspect Oriented Programming,面向切面编程)是Spring框架的一个重要模块,它扩展了传统的面向对象编程,允许开发者定义“横切关注点”(cross-cutting concerns),如日志、事务...

    springAOP配置动态代理实现

    一、Spring AOP基础知识 1. **什么是AOP**:AOP是一种编程范式,用于处理系统中的横切关注点,即那些跨越多个类或方法的共同功能,如事务管理、日志记录等。AOP通过切面(Aspect)将这些关注点与业务逻辑分离,提高...

    spring aop hessian 基础demo 部署即可运行

    Spring AOP和Hessian是两个在Java开发中广泛使用的技术,尤其在分布式系统和服务治理中。下面将详细解释这两个概念以及它们如何结合使用。 **Spring AOP(面向切面编程)** Spring AOP是Spring框架的一个重要组成...

    spring aop所需jar包

    - `spring-core.jar`:Spring的基础库,提供核心工具类和IoC容器。 - `spring-context.jar`:提供了AOP、事件、国际化等功能,是Spring的核心部分。 - `spring-expression.jar`(SpEL):Spring表达式语言,用于...

    spring aop 附带测试实例

    在提供的压缩包文件"springAOP"中,可能包含了以下内容: - **切面类(Aspect Class)**:包含切点和通知的Java类,可能使用了`@Aspect`注解。 - **目标类(Target Class)**:被AOP代理的对象,通常包含业务逻辑。...

    Spring AOP需要的jar

    aopalliance-1.0.jar是Spring AOP的基础,它提供了一个接口层,使得不同的AOP实现可以协同工作。这个库包含了一些基本的AOP概念,如JoinPoint(连接点)、Pointcut(切点)、Advice(通知)等的接口。这些接口为创建...

Global site tag (gtag.js) - Google Analytics