`
wutheringsea
  • 浏览: 263295 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

Spring笔记5---Spring AOP编程

阅读更多

1. JointPoint接口。一般直接使用它的子接口ProceedingJointPoint。

    如果开发者不需要修改传入目标操作参数,则直接调用pjp.proceed()无参方法即可,如需要修改过目标参数,则需要调用

    pjp.proceed(java.lang.Object[])方法。

    代码片段:

 

 

@Pointcut("execution(public * test.service..*(..))&&args(str)")
public void service(String str){}

@Around("service(str)"+"&&target(obj)&&this(proxy)")
public Object aroundAspect(ProceedingJointPoint pjp,String str,Object obj,Object proxy){
 .......

 try{
    str="s.s.lazio";
    return pjp.proceed(new Object[]{str});  //修改了str的值
  }catch(Throwable e){
      ......
   }
}

 2. Ordered接口和@Order注解

 

    如下例中LoggingBeforeAspect1作用的@Order注解取值更小,因此比LoggingBeforeAspect2先被触发

 

@Aspect   
@Order(2)
public class LoggingBeforeAspect1{
  .......
}

@Aspect
@Order(8)
LoggingBeforeAspect2{
......
}
 

    而实现Ordered接口方法则看返回值的大小,如下:

 

@Aspect 
public class LoggingBeforeAspect1 implements Ordered{
   public int getOrder(){
     return 2;
  }
}


@Aspect   
public class LoggingBeforeAspect2 implements Ordered{
   public int getOrder(){
     return 8;
  }
}
 

 

3. pointcut表达语言

 

    示例如下:

 

execution(public * test.service..*(..))
  

    其中public指可见性模式,指定了目标方法的可见性;第一个*指定了返回类型模式,即各种返回类型,包括void;test.service..指定声明类型模式,即service包及其子包中所有java 类型;第二个*指定了方法名模式,即所有方法;第二个*后面的..指定了参数模式,即含有若干参数,包括无参情况。

    +表示子类,比Info+表示Info类及其子类。

 

4. Spring 2.x的关键字

 

    execution

 

    within

 

    @within

 

    this

 

    target

 

    @target

 

    args

 

    @args

 

    @annotation

 

    bean

 

 

5. 基于<aop:config/>元素的AOP。(在不满足jdk5以下系统可采用此基于xml的aop编程)

 

<aop:pointcut/> : 用于指定pointcut表达式,id属性是指定表达式的唯一名称。注意expression中,不能像annotation一样,xml要用"and"和"or"替代"&&"和"||",另外非运算用"not"代替"!"

 

 

<aop:config>
<aop:pointcut id="before" expression="test.aspect.LoggingBefore.before() and args(str) and target(obj) and this(proxy)">

<aop:aspect ref="loggingBeforeAspect">
  <aop:before pointcut-ref="before" method="beforeAspect"/>
</aop:aspect>

</aop:config>

 

常见的<aop:config/>元素支持的其他装配:

 

<aop:before/>,<aop:after-returning/>,<aop:after-throwing/>,<aop:after/>,<aop:around/>,<aop:declare-parents/>

 

 

<aop:advisor/>元素:

Advisor对象是个特殊的切面,仅仅包含单个装备。

 

 

<bean id="simpleTraceInterceptor" class="...."/>

<aop:config>
<aop:pointcut id="all" expression="execution(public void or String test.service..*(..))"/>

<aop:advisor advice-ref="simpleTraceInterceptor" pointcut-ref="all"/>

</aop:config>
分享到:
评论
1 楼 吐蕃无敌土匪 2014-07-09  

相关推荐

    spring源码--AOP流程--笔记.docx

    Spring AOP 源码分析笔记 Spring AOP(Aspect-Oriented Programming)是一种编程范式,它允许开发者 modularize cross-cutting concerns,即将横切关注点模块化。AOP 使得开发者可以将一些公共的功能模块化,以便在...

    spring-framework-2.5-rc2-with-dependencies\spring-framework-2.5-rc2\spring-framework-2.5-rc2docs

    其次,Spring 2.5对AOP(面向切面编程)的支持也得到了加强。AOP允许开发者在不修改原有代码的情况下,插入跨切面的关注点,如日志、事务管理等。在这个版本中,Spring提供了基于注解的AOP支持,使得切面定义更加...

    SpringDM笔记7-开发SpringDM Bundle

    SpringDM提供了一种在OSGi容器中使用Spring IoC(Inversion of Control)和AOP(Aspect-Oriented Programming)的方法。 在本笔记中,我们将深入探讨如何开发SpringDM Bundle。首先,我们需要理解OSGi的基本概念,...

    spring aop 学习笔记

    本学习笔记将深入探讨Spring AOP的核心概念、工作原理以及实际应用。 1. **核心概念** - **切面(Aspect)**:切面是关注点的模块化,包含业务逻辑之外的横切关注点,如日志、事务管理。 - **连接点(Join Point...

    ssh-aop笔记

    SSH-AOP笔记主要涵盖的是Spring、Struts和Hibernate三大框架集成使用时,如何结合Aspect Oriented Programming(面向切面编程)的理念进行应用增强。在Java企业级开发中,SSH是常用的MVC架构,而AOP则是一种编程范式...

    spring ioc aop mvc boot-学习笔记.docx

    Spring框架是Java开发中不可或缺的一部分,它为开发者提供了强大的依赖注入(IOC)和面向切面编程(AOP)功能,以及用于构建Web应用程序的MVC框架。Spring Boot则是基于Spring框架构建的应用程序启动器,旨在简化...

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

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

    spring-framework-5.2.3.RELEASE.rar

    4. **AOP(面向切面编程)**:Spring的AOP模块允许开发者定义“切面”,即跨越多个对象的行为或关注点。这可以用于实现日志、事务管理等跨切面的服务。 5. **测试**:Spring的测试模块提供了对单元测试和集成测试的...

    Spring学习笔记-cqupt

    Spring 的核心特性包括控制反转(IOC,Inversion of Control)和面向切面编程(AOP)。在本篇 Spring 学习笔记中,我们将探讨 Spring 的入门、优点、组成以及重要的IOC理论。 1. **Spring 简介** Spring 是一个...

    Spring-IOC-AOP.md

    Spring学习笔记,主要包括核心技术IOC和AOP

    Spring学习笔记(16)----使用Spring配置文件实现AOP

    在本篇Spring学习笔记中,我们将深入探讨如何利用Spring配置文件来实现面向切面编程(AOP)。面向切面编程是Spring框架的核心特性之一,它允许我们把关注点分离,将横切关注点(如日志、事务管理、权限控制等)与...

    Spring AOP IOC源码笔记.pdf

    Spring框架是Java开发中不可或缺的一部分,它主要由两个核心组件构成:IoC(Inversion of Control,控制反转)和AOP(Aspect Oriented Programming,面向切面编程)。本笔记将深入探讨这两个概念以及它们在Spring中...

    SSH笔记-AOP

    SSH笔记主要围绕的是Spring框架中的AOP(面向切面编程)特性进行讲解,结合了动态代理和基于注解的配置方式。AOP是Spring框架的一个重要组成部分,它提供了一种模块化和解耦代码的方式,使得我们可以将关注点分离到...

    spring-analysis-master.zip

    2. AOP(Aspect Oriented Programming):Spring提供了面向切面编程的支持,可以方便地定义和执行切面,如日志记录、事务管理等,使得业务逻辑与系统服务分离。 二、Spring MVC 1. Spring MVC是Spring框架的一部分...

    Spring框架笔记-搭建-基础理论--面试.pdf

    3. Spring核心特点之二:AOP面向切面编程 面向切面编程(AOP, Aspect-Oriented Programming)是Spring的另一个重要特性。AOP允许开发者通过定义横向关注点(例如日志、事务管理等)将代码从业务逻辑中分离出来,以...

    SpringAop学习笔记以及实现Demo

    **Spring AOP 学习笔记及实现Demo** Spring AOP(Aspect Oriented Programming,面向切面编程)是Spring框架中的一个重要组成部分,它提供了一种在不修改源代码的情况下,对程序进行功能增强的技术。AOP的主要目的...

    JSF2整合Spring3------JSF学习笔记4

    JSF是一个用于构建用户界面的MVC(Model-View-Controller)框架,而Spring则是一个全面的企业级应用框架,尤其在依赖注入(DI)和面向切面编程(AOP)方面表现出色。本文将深入探讨如何将JSF2与Spring3进行整合,...

    Spring5-尚硅谷框架课堂笔记.rar

    Spring 是一个开源的 Java 应用程序框架,它以 IoC(Inversion of Control,控制反转)和 AOP(Aspect-Oriented Programming,面向切面编程)为核心,极大地简化了企业级应用的开发工作。通过这份笔记,我们可以深入...

    Spring笔记.doc

    http://www.springframework.org/schema/aop/spring-aop-2.5.xsd"&gt; ``` 在配置文件中,可以定义数据源、SessionFactory,以及事务管理和 AOP 规则,从而实现 Spring 对 Hibernate 的全面管理。 总的来说,Spring ...

Global site tag (gtag.js) - Google Analytics