`
biubiu00
  • 浏览: 457 次
  • 性别: Icon_minigender_1
  • 来自: Melbourne
最近访客 更多访客>>
社区版块
存档分类
最新评论

AOP notes

阅读更多
Aop
  1.Terms--
  aspect : ->unit of modularity @Aspect
  join point: ->a point during the execution of a program ,usually represents a method execution
  Advice: ->action taken at particular join point, e.g. “around”,”before”,”after”
Pointcut:->a predicate that matches join points. Associated with a pointcut expression and runs
                     at any join point matched by the pointcut.
Introduction: ->declaring additional methods or fields on behalf of a type(to intro new
                              interface)
  target object:-> object being advised by one or more aspects
  AOP proxy :-> created by the AOP framework to implement the aspect contracts
  Weaving: linking aspects with other app. types or objects to create an advised obh.
 
  enable @AspectJ Sipport
               spring configuration
               <aop:aspectj-autoproxy/>
<bean class="org.springframework.aop.aspectj.annotation.AnnotationAwareAspectJAutoProxyCreator" />

Usage:
            e.g.
                   
      @Aspect
public class SystemArchitecture {

  /**
   * A join point is in the web layer if the method is defined
   * in a type in the com.xyz.someapp.web package or any sub-package
   * under that.
   */
  @Pointcut("within(com.xyz.someapp.web..*)")
  public void inWebLayer() {}

  /**
   * A join point is in the service layer if the method is defined
   * in a type in the com.xyz.someapp.service package or any sub-package
   * under that.
   */
  @Pointcut("within(com.xyz.someapp.service..*)")
  public void inServiceLayer() {}

  /**
   * A join point is in the data access layer if the method is defined
   * in a type in the com.xyz.someapp.dao package or any sub-package
   * under that.
   */
  @Pointcut("within(com.xyz.someapp.dao..*)")
  public void inDataAccessLayer() {}

  /**
   * A business service is the execution of any method defined on a service
   * interface. This definition assumes that interfaces are placed in the
   * "service" package, and that implementation types are in sub-packages.
   * 
   * If you group service interfaces by functional area (for example, 
   * in packages com.xyz.someapp.abc.service and com.xyz.def.service) then
   * the pointcut expression "execution(* com.xyz.someapp..service.*.*(..))"
   * could be used instead.
   *
   * Alternatively, you can write the expression using the 'bean'
   * PCD, like so "bean(*Service)". (This assumes that you have
   * named your Spring service beans in a consistent fashion.)
   */
  @Pointcut("execution(* com.xyz.someapp.service.*.*(..))")
  public void businessService() {}
  
  /**
   * A data access operation is the execution of any method defined on a 
   * dao interface. This definition assumes that interfaces are placed in the
   * "dao" package, and that implementation types are in sub-packages.
   */
  @Pointcut("execution(* com.xyz.someapp.dao.*.*(..))")
  public void dataAccessOperation() {}

}


@AfterReturning:->After returning advice runs when a matched  method 
                  execution returns normally.
          e.g.:
    @AfterReturning(
    pointcut="com.xyz.myapp.SystemArchitecture.dataAccessOperation()",
    returning="retVal")

@AfterThrowing:->runs when a matched method execution exits by  throwing an exception.
          e.g:@AfterThrowing(
    pointcut="com.xyz.myapp.SystemArchitecture.dataAccessOperation()",
    throwing="ex")
@Around AroundAdvice:Spring 通过实现MethodInterceptor(aopalliance)来实现包围通知,最大特点是可以修改返回值,当然它在方法前后都加入了自己的逻辑代码,因此功能异常强大。通过MethodInvocation.proceed()来调用目标方法(甚至可以不调用)
分享到:
评论

相关推荐

    Notes01---Ron

    【标题】"Notes01---Ron" 涉及到的知识点主要集中在Spring框架和Java编程语言上,可能包括源码解析和工具的使用。由于描述中提到了一个博客链接,我们可以推测这篇笔记可能是一位名叫Ron的学习者对于他在阅读源码、...

    Starry-Notes:Starry-Notes 记录学习的一点一滴,从基础到源码,从框架到架构,从技术重难点到面经

    Starry-Notes Preface 一个记录学习一点一滴的仓库诞生了,但我仍旧感到彷徨。我又发现这迷惘的未来正缓缓在身边打圈,一哒一咔的键盘声里, 渐渐舒展开学习记录的五味,就从这一次Git提交开始,就从这,一次灯光...

    Spring-Framework-Notes-For-Professionals.pdf

    - 它通过依赖注入(DI)和面向切面编程(AOP)等核心概念降低各层之间的耦合度。 - Spring支持多种配置方式,包括XML配置和注解驱动的配置。 2. Spring核心(Spring Core) - Spring Core模块是Spring框架的基石...

    Spring iBatis Learning Notes

    2. **事务管理**:利用Spring的AOP特性来实现事务管理,简化事务控制的代码量。 3. **异常处理**:Spring提供了一套完善的异常处理机制,可以用来统一处理数据库操作中可能出现的各种异常情况。 ##### 4.4 Spring ...

    java-senior-development-engineer-interview-notes-master.zip

    这份"java-senior-development-engineer-interview-notes-master.zip"压缩包显然是为了帮助准备这类面试而精心整理的资源。以下是基于这个主题可能涉及的一些核心知识点的详细解释: 1. **Java基础知识**:理解Java...

    Notes-App-Backend

    它简化了依赖注入,提供了面向切面编程(AOP),并包含用于构建Web应用的模块,如Spring MVC。在Notes-App中,Spring可能被用来创建控制器,处理HTTP请求,以及配置数据库连接。 4. **RESTful API**:REST...

    Notes

    13. **Spring框架**:依赖注入,AOP(面向切面编程),Spring Boot,Spring MVC等。 14. **数据库连接**:JDBC基础,事务处理,预编译语句,批处理等。 15. **单元测试**:JUnit,Mockito等测试框架的使用。 这个...

    Assessment:Linux夏令营-Spring Notes-评估

    【标题】Linux夏令营-Spring Notes-评估 在本次Linux夏令营中,我们重点关注了Spring框架,这是一个广泛使用的Java应用程序开发框架,特别适用于构建企业级应用。Spring以其模块化、灵活的设计以及对依赖注入的支持...

    SpringFramework Notes For Professionals(对于专业人士的Spring笔记)

    SpringFramework的知识点非常丰富,不仅包括了核心的依赖注入和面向切面编程(AOP),还包括了对数据访问、事务管理、Web框架等各个方面的支持。这些知识点不仅能够让开发者快速上手Spring Framework,还能帮助他们...

    Java_Architect_Notes-Balaji.rar_java architect

    4. **框架与库**:对Spring框架的深入理解,包括依赖注入、AOP(面向切面编程)、Spring Boot、Spring Cloud等,以及MyBatis、Hibernate等持久层框架的使用,能够帮助架构师构建高效、可维护的系统。 5. **微服务...

    Spring_notes

    介绍 核心容器(Spring Core)  核心容器提供Spring框架的基本功能。Spring以bean的方式组织和管理Java应用中的各个组件及其关系。Spring使用BeanFactory来产生和管理Bean,它是工厂模式...Spring AOP 模块为基于 Spr

    Java+JDK+7 Learning notes.zip_java_jdk

    动态代理则允许在运行时创建代理类,用于AOP(面向切面编程)或事件监听等功能。 九、JDBC与数据库编程 学习Java如何与数据库交互,理解JDBC API,包括连接数据库、执行SQL语句、处理结果集等操作,以及事务处理和...

    notes

    - **Spring框架**:企业级应用开发的主流选择,涵盖依赖注入、AOP、MVC等。 - **MyBatis**:持久层框架,简化SQL操作。 - **JUnit**:单元测试框架,用于编写和运行测试用例。 以上内容只是Java编程领域的一小...

    notes_javautils:java工具,框架整合

    其次,框架是Java开发中的重要组成部分,例如Spring Framework是企业级应用开发的首选,它提供了IoC(控制反转)和AOP(面向切面编程)等特性,使得应用程序的结构更加清晰。Spring Boot进一步简化了Spring的启动和...

    Spring-Source-Notes:Spring原始深度解析笔记-源码解析

    Spring框架是Java开发中不可或缺的一部分,它以Inversion of Control(IOC)和Aspect-Oriented Programming(AOP)为核心理念,极大地简化了企业级应用的复杂性。这本《Spring原始码深度解析》的笔记主要关注Spring...

    Spring Certification Study Notes-开源

    Spring框架是Java企业级应用开发中的主流框架,它以其依赖注入(Dependency Injection,DI)和面向切面编程(Aspect-Oriented Programming,AOP)为核心,提供了一个模块化的、易于扩展的平台。学习笔记将引导你深入...

    school-notes-spring-2020:2020年Spring的学校笔记

    4. **AOP(面向切面编程)**:Spring对AOP的支持,用于实现日志记录、事务管理等横切关注点。 5. **数据访问**:Spring与各种数据库的集成,包括JDBC、Hibernate和MyBatis等ORM工具的使用。 6. **Spring Boot**:...

    Technical-Notes:Java笔记

    - **Spring框架**:企业级Java应用的主流框架,包括依赖注入、AOP、Spring Boot、Spring MVC等。 - **JUnit/TestNG**:单元测试框架,用于编写和执行测试用例,保证代码质量。 6. **HTML基础知识** - **HTML元素...

    SharpCrafters PostSharp Ultimate 5.0.44(含key)

    PostSharp是一个比较强调易学易用的AOP框架 PostSharp是一个非常优秀的AOP框架,使用上非常方便,功能强大,对目标拦截的方法不需要...Notes: All vsix files repacked with cracked PostSharp.Compiler.Settings.dll

Global site tag (gtag.js) - Google Analytics