`
8821249
  • 浏览: 68720 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Spring笔记(十二)自动代理AspectJ切面

阅读更多
一、声明式通知
  1、@Before
  2、@AfterReturning
    a、要获得目标方法的返回值,必须使用returning属性,在@AfterReturning的参数上设置(参数名的绑定),表示向下面方法的哪个参数传入目标方法的返回值。(声明式通知)
    b、例如:
  @AfterReturning(value="execution(* doSome(..))", returning="rtnValue")
	  public void action(int rtnValue) {
		  System.out.println(rtnValue);
	  }

  3、@AfterThrowing
    a、绑订连接点时,必须使用throwing属性
    b、例如:
	  @AfterThrowing(value="execution(* doSome(..))", throwing="ine")
	  public void actionIllageNameException(IllageNameException ine) {
		  System.out.println(ine.getMessage());
	  }

  4、@After
    a、相当于@AfterThrowing和@AfterReturning
  5、@Around
    a、使用ProceedingJoinPoint调用目标对象方法。
    b、调用目标方法,应该有返回值
  6、@DelareParents
    a、@DeclareParents(value="aop3.SomeServiceImpl",defaultImpl=OtherServiceImpl.class),声明在新增加接口上。
    b、属性value表示对哪个目标类引入。
    c、属性defaultImpl表示新增加引入接口逻辑的实现。
@DeclareParents(value="hw.aop.test.SomeServiceImpl", defaultImpl=OtherServiceImpl.class)
	private IOtherService service;

IOtherService为新增加方法接口


二、切面
  1、切入点表达式:定义切面可以用到哪些目标对象的哪些方法。
  2、定义方法,切入点:@Before("XXX"),定义在方法上。
  3、在类名上面定义:@Aspect
@Aspect
public class LogAdvice {
	
	@DeclareParents(value="hw.aop.test.SomeServiceImpl", defaultImpl=OtherServiceImpl.class)
	private IOtherService service;

}


三、声明式切入点
  1、格式:@Pointcut(切入点表达式)
  2、execution:
    a、一个函数,参数为定义的匹配规则,如:@Before("execution(* doSome(..))")
    b、格式:execution(方法的修饰符? 方法的返回值? 方法名通配符(方法参数))
    c、方法参数可以用..,表示任意参数格式数量,也可以指定参数,如int
    d、方法名可以加上包名,也可以使用通配符。
    c、此表达式不支持继承,即父类匹配,切面不织入到子类中。
  3、within

四、配置自动代理
  1、在配置文件里声明AnnotationAwareAspectJAutoProxyCreator进行自动代理。
  2、也可以使用<aop:aspectj-autoproxy />标签自动代理。
	<bean class="org.springframework.aop.aspectj.annotation.AnnotationAwareAspectJAutoProxyCreator" />


<aop:aspectj-autoproxy />


五、JoinPoint
  1、在通知里如果要获得目标方法的名字时,我们可以将方法传入JoinPoint参数。
  2、jp.getSignature().getMethodName()获得方法名。
	@Before("execution(* doSome(..))")
	public void action(JoinPoint jp) {
		String mn = jp.getSignature().getMethodName();
		System.out.println(mn);
	}
分享到:
评论
1 楼 snowolf 2009-09-16  
不错!

相关推荐

    spring aop 学习笔记

    - **代理(Proxy)**:Spring AOP创建的对象,用于实现切面的逻辑。 - **织入(Weaving)**:将切面应用到目标对象,创建代理的过程。可以发生在运行时或编译时。 2. **工作原理** - **动态代理**:Spring AOP...

    Spring学习笔记

    在探讨Spring框架中AOP(面向切面编程)及基于Annotation的动态代理之前,我们首先需要了解AOP的基本概念及其在Spring中的实现方式。AOP是一种编程范式,旨在通过分离关注点来提高代码的可读性和可维护性。具体来说...

    Spring笔记(第六次)1

    `AnnotationAwareAspectJAutoProxyCreator`是一个重要的组件,它负责处理切面的自动代理创建,能够识别并应用注解定义的切面。 `AnnotationAwareAspectJAutoProxyCreator`是Spring AOP的核心,它继承自`...

    spring的学习笔记

    Spring框架是Java开发中广泛使用的轻量级框架,以其依赖注入(Dependency Injection,简称DI)和面向切面编程(Aspect-Oriented Programming,简称AOP)的核心特性,极大地简化了企业级应用的开发。以下是对Spring...

    Spring学习笔记(13)----动态代理模式分析演示

    Spring框架广泛利用了动态代理来实现依赖注入、AOP(面向切面编程)等核心功能。 首先,我们需要了解动态代理的基本概念。动态代理是在运行时创建一个代理类,该类可以代表目标类执行某些操作,同时还能在这些操作...

    spring学习笔记(十三)

    【标题】"Spring学习笔记(十三)"主要涉及的是Spring框架中的AOP(面向切面编程)部分,特别是关于CGLIB动态代理的实现。在Spring中,AOP是一种强大的编程模型,它允许开发者定义“切面”,即关注点的模块化,如日志...

    SpringAop学习笔记以及实现Demo

    2. **基于注解的AOP Demo**:展示了如何在切面类中使用注解定义通知,并在运行时自动织入切面。 3. **基于XML配置的AOP Demo**:演示了在XML配置文件中定义切面、切入点和通知的完整流程。 4. **事务管理Demo**:...

    Spring学习笔记(15)----使用Spring的注解方式实现AOP

    在本篇Spring学习笔记中,我们将深入探讨如何利用Spring框架的注解方式来实现面向切面编程(AOP)。AOP是一种编程范式,它允许我们定义横切关注点,如日志、事务管理等,然后将这些关注点模块化并插入到应用程序的多...

    Spring笔记(面试题)md

    AspectJ是一个强大的面向切面编程框架,可以与Spring框架一起使用来实现AOP。它提供了一种更加灵活的方式来定义切面和通知,支持静态编译时织入和运行时织入。 #### 15. AspectJ常见通知类型 - **@Before**:在...

    spring mvc学习笔记

    ### Spring MVC 学习笔记之 AOP 面向切面编程详解 #### 一、AOP 概念概述 面向切面编程(Aspect Oriented Programming, AOP)是一种编程范式,它允许程序员定义“切面”来封装那些与业务逻辑本身无关的功能,比如...

    Spring AOP 复习笔记.rar

    Spring AOP(Aspect Oriented Programming,面向切面编程)是Spring框架的重要组成部分,它允许程序员定义“切面”,这些切面可以封装跨越多个对象的行为,比如日志、事务管理等。AOP提供了一种模块化的方式,将核心...

    spring 学习笔记

    Spring框架是Java开发中最...以上就是Spring框架的一些关键知识点,学习Spring笔记可以帮助我们深入了解这些概念,并在实际开发中灵活运用。通过深入学习和实践,可以掌握Spring框架的精髓,提升开发效率和应用质量。

    Spring2.5_学习笔记.doc.zip

    在AOP(面向切面编程)方面,Spring2.5引入了@AspectJ注解支持,允许开发者使用更自然的面向对象的方式来定义切面,而无需依赖XML配置或者使用AspectJ的编译器。@Before、@After、@Around等注解让切面逻辑的实现更加...

    Spring AOP 使用笔记

    Spring AOP(面向切面编程)是Spring框架的重要组成部分,它提供了一种模块化和解耦的编程方式,使得开发者可以将关注点分离到所谓的“切面”中,而不是混杂在业务逻辑代码中。本笔记主要探讨了如何在Spring应用中...

    spring-AOP面向切面编程所需jar包.zip

    该压缩包包含--学习笔记(05):轻松搞定Spring全家桶(初识篇)-面向切片编程AOP:--系列博客中新需要的三个jar包。包括spring-aspects-5.2.7.RELEASE.jar和spring-aop-5.2.7.RELEASE.jar和...

    spring笔记

    4. **AOP支持**:Spring的面向切面编程(Aspect-Oriented Programming,简称AOP)功能使得权限拦截、运行时监控等跨切面关注点的处理变得简单。 5. **辅助类支持**:Spring提供了如JdbcTemplate、HibernateTemplate...

    spring2.5 学习笔记

    面向切面编程(AOP)是Spring的另一个重要特性,允许我们在不修改代码的情况下添加横切关注点。第七课中,我们学习了AOP的概念以及如何通过动态代理实现。第八课详细介绍了AOP的配置选项,包括注解和XML方式。了解...

    spring学习笔记LBY.pdf

    ### Spring学习笔记知识点详解 #### 一、Spring学习模块概览 Spring框架作为一个全面而强大的...以上是对Spring框架及其面向切面编程(AOP)相关知识点的详细介绍,希望能够帮助开发者更好地理解和应用Spring框架。

Global site tag (gtag.js) - Google Analytics