`

Spring的AOP_XXXXXX

阅读更多

1、相关概念:
1)Aspect(切面):指横切性关注点的抽象即为切面。与类相似,只是两者的关注点不同,类是对物体特征的抽象,而切面是横切性关注点的抽象。
2)Joinpoint(连接点):指一些被拦截到的点。在Spring中,这些点指的是方法,因为Spring只支持方法类型的连接点,实际上连接点还可以是field或类构造器。
3)Advice(通知):指拦截到连接点之后所要做的事情,分为前置通知,后置通知,异常通知,最终通知和环绕通知。
4)Pointcut(切入点):指对那些Jointpoint进行拦截的定义。
5)Target(目标对象):代理要实现的目标对象。
6)Weave(织入):指将Aspects应用到Target对象并导致proxy对象创建的过程。
7)Introduction(引入):在不修改类代码的前提下,Introduction可以在运行期间为类动态地添加一些方法或Field.

 

2、使用Spring的注解方式实现AOP
首先要在XML文件中添加以下语句:
<?xml version="1.0" encoding="UTF-8"?>
<beans ……
       …… 
       xmlns:aop="
http://www.springframework.org/schema/aop"     
       ……
      
http://www.springframework.org/schema/aop                  http://www.springframework.org/schema/aop/spring-aop-2.5.xsd">
      
 <aop:aspectj-autoproxy/>
       
 ……

</beans>
然后就可以将类声明为切面,在切面中设置切入点,通知等,如:
@Aspect
//@Aspect声明一个切面  @Component 将切面交给Spring管理

public class MyInterceptor {
	@Pointcut("execution(* com.spring.aop.service.impl.PersonserviceBean.*(..))")
	private void anyMethod(){}//声明一个切入点
	
	@Before("anyMethod() && args(name)")
	public void doAccessCheck(String name){//设置前置通知
		System.out.println("here is before advice!"+name);
	}
	
	@AfterReturning(pointcut="anyMethod()",returning="result")
	public void doAfterReturning(String result){//设置后置通知
		System.out.println("here is AfterReturning advice! "+result);
	}
	
	@After("anyMethod()")
	public void doAfter(){//设置最终通知
		System.out.println("here is After advice!");
	}
	
	@Around("anyMethod()")//设置环绕通知,必须有下面的参数话和调用proceed()方法
	public Object doAroundAdvice(ProceedingJoinPoint pjp)throws Throwable{
		System.out.println("go into the method!");
		Object result = pjp.proceed();
		System.out.println("drop back the method!");
		return result;	
	}
}

 

3、使用Spring的XML配置文件实现AOP
 只需要将声明为切面的Bean在配置文件中声明,在使用配置文件中的切面设置进行具体配置,如:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="
http://www.springframework.org/schema/beans"
       xmlns:xsi="
http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="
http://www.springframework.org/schema/context"
       xmlns:aop="
http://www.springframework.org/schema/aop"     
       xsi:schemaLocation="
http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
           http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd
           http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd">
        <aop:aspectj-autoproxy/>
      
        <bean id="aspetbean" class="com.fojian.service.MyInterceptor"/><!--将需要做切面的Bean交Spring管理-->
        <aop:config>
         <aop:aspect id="asp" ref="aspetbean"><!--声明切面-->
          <aop:pointcut id="mycut" expression="execution(* com.fojian.service..*.*(..))"/><!--声明切入点-->
          <aop:before pointcut-ref="mycut" method="doAccessCheck"/><!--声明前置通知-->
          <aop:after-returning pointcut-ref="mycut" method="doAfterReturning"/><!--声明后置通知-->
   <aop:after-throwing pointcut-ref="mycut" method="doAfterThrowing"/><!--声明例外通知-->
   <aop:after pointcut-ref="mycut" method="doAfter"/><!--声明最终通知-->
   <aop:around pointcut-ref="mycut" method="doBasicProfiling"/><!--声明环绕通知-->
         </aop:aspect>
        </aop:config>
</beans>

分享到:
评论

相关推荐

    Spring_AOP_学习小结 Spring_AOP_学习小结 Spring_AOP_学习小结

    Spring AOP,即面向切面编程,是Spring框架的核心组件之一,它允许程序员在不修改原有业务代码的情况下,对程序进行功能增强。本篇文章将详细阐述Spring AOP的基本概念、种类、代理原理、通知类型以及切入点,帮助你...

    spring_AOP.rar_876.aop_java aop_spring_aop

    1. Spring_AOP_DynProxy:这可能包含有关Spring动态代理的资料,Spring使用JDK动态代理或CGLIB来创建代理对象,实现AOP的功能。 2. ch20_aop_annotation:这部分内容可能是关于使用注解来定义和实现切面的教程。 3. ...

    8_24_SpringAOP_springaop_

    Spring AOP,全称Aspect-Oriented Programming(面向切面编程),是Spring框架的重要组成部分,它为应用程序提供了声明式的企业级服务,如日志、事务管理等。在本教程中,我们将深入探讨Spring AOP的基本概念、配置...

    Spring示例_Printer_Spring_AOP_Spring_Proxy

    在本示例中,"Spring示例_Printer_Spring_AOP_Spring_Proxy" 主要关注的是Spring框架中的核心概念,特别是AOP(面向切面编程)和代理模式的应用。让我们深入探讨这些知识点。 首先,Spring框架是Java开发中最常用的...

    Spring IOC和Spring AOP_spring aop_springIOC

    Spring框架是Java开发中最常用的轻量级框架之一,它的核心特性包括依赖注入(Dependency Injection,简称DI)和面向切面编程(Aspect-Oriented Programming,简称AOP)。这两个概念是Spring框架的基石,极大地简化了...

    spring aop_aopalliance.jar_aspectjweaver.jar

    在IT行业中,Spring AOP(面向切面编程)是一个重要的模块,它允许开发者在不修改源代码的情况下,通过“切面”来实现关注点的分离。AOP联盟(AOP Alliance)提供了一套通用的接口,使得不同的AOP框架可以进行互操作...

    spring_aop_xml.rar_java aop_xml aop

    在实际的`spring_aop_xml`压缩包中,应该包含了相关的XML配置文件、服务接口及其实现类、通知类等,通过这些文件可以更好地理解和学习如何在XML中配置和使用Spring AOP。通过深入学习和实践,你将能熟练掌握这一强大...

    spring-aop.rar_java aop_spring aop

    【标题】"spring-aop.rar_java aop_spring aop" 涉及的主要知识点是Spring框架中的面向切面编程(AOP)以及Java基础知识。这个压缩包可能包含了一个简单的Spring AOP应用示例,同时也涵盖了Java的一些核心概念,如...

    spring_2.5_aop_lib.zip

    本文将围绕"spring_2.5_aop_lib.zip"这个压缩包中的相关库进行深入探讨,了解它们如何协同工作,以实现AOP的功能。 首先,我们看到压缩包内的aspectjweaver.jar,这是AspectJ的编织器,它负责在运行时或编译时将切...

    SPRING_AOP_概念解析以及例子示范.docx

    Spring AOP,全称Spring面向切面编程,是一种强大的设计模式,它允许程序员在不修改原有代码的情况下,插入额外的功能,比如日志记录、事务管理、性能监控等。AOP的核心概念包括: 1. **通知(Advice)**:通知定义了...

    SpringAOP_aspescj

    使用Spring AOP的时候,需要四个额外的jar包支持 aopalliance-1.0.jar,aspectjweaver-1.8.9.jar,aspectjrt-1.8.9.jar,aspectjtools-1.8.9.jar

    基于spring_aop_权限管理系统原型

    基于spring_aop_权限管理系统原型

    学习Spring笔记_AOP_Annotation实现和XML实现

    这篇“学习Spring笔记_AOP_Annotation实现和XML实现”主要探讨了如何在Spring中利用注解和XML配置来实现AOP的概念。 AOP,全称Aspect-Oriented Programming,是一种编程范式,旨在将关注点分离,让开发者可以更专注...

    spring_AOP_jar.zip

    这个压缩包"spring_AOP_jar.zip"包含了与Spring AOP相关的库文件和文档,帮助开发者在项目中集成和使用这一功能。 1. aspectjweaver.jar:这是AspectJ的织入器,负责在运行时动态地将切面织入到目标类中。AspectJ是...

    spring-aop.rar_aop1270_spring_spring aop

    《深入解析Spring AOP:源码解读与应用实践》 Spring AOP,即Spring的面向切面编程,是Spring框架的重要组成部分,它提供了一种在不修改源代码的情况下,对程序进行功能增强或统一处理的方法。本文将围绕Spring AOP...

    spring_aop1.rar_java aop_spring mvc 例子

    本实例“spring_aop1.rar”是一个关于Spring AOP入门的教程,旨在帮助开发者更好地理解和运用Spring的AOP特性,同时也涉及到Spring MVC的相关知识。下面我们将深入探讨这两个关键概念。 首先,让我们了解一下Spring...

    spring_aop_cglib的实现方式

    在Spring AOP(面向切面编程)中,CGLIB是一个重要的动态代理库,它用于在运行时创建子类以实现对目标对象的代理。CGLIB是针对那些不支持接口代理(例如Java中的final类)的情况而设计的。下面我们将深入探讨Spring ...

    spring-nested-aop.zip_aop_spring aop

    Spring AOP,全称Aspect-Oriented Programming(面向切面编程),是Spring框架的一个重要组成部分。它提供了一种模块化和声明式的方式来处理横切关注点,如事务管理、日志记录、性能监控等,这些关注点通常会分散在...

    spring_aop_拦截实例

    在Spring框架中,AOP(面向切面编程)是一种强大的工具,它允许程序员定义横切关注点,如日志、事务管理、性能监控等,并将它们模块化为可重用的组件,称为切面。本实例主要探讨如何在Spring AOP中实现拦截器。 ...

Global site tag (gtag.js) - Google Analytics