Spring中的ContuolFlowPointcut性能问题及Advice的问题

问题描述

我是Spring的初学者,在ControlFlowPointcut这里,书中提到了性能问题:“因为ControlFlowPointcut类型的Pointcut需要在运行期间检查程序的调用栈,而且每次都需要检查,所以性能比较差”。我对这句话不太理解,其中提到的程序调用栈是什么?为什么要检查程序调用栈?为什么检查程序调用栈会降低性能?请各位师兄帮帮忙,不胜感激!另:还有一个问题向大家请教:Spring的Advice可以分为per-class和per-instance两种,但我还是不太明白这两种Advice的区别在哪?很多资料都这么讲:“per-class类型的Advice的实例可以在目标对象类的所有实例之间共享,per-instance类型的Advice会为不同的实例对象保存它们各自的状态及相关逻辑”,这句话很笼统,麻烦哪位师兄具体的讲讲。再次谢谢大家。

解决方案

本帖最后由 loveryxzx 于 2011-03-24 22:43:03 编辑
解决方案二:
该回复于2011-03-25 09:57:34被版主删除
解决方案三:
该回复于2011-03-25 13:27:46被版主删除

时间: 2024-09-15 02:35:45

Spring中的ContuolFlowPointcut性能问题及Advice的问题的相关文章

Spring中的AOP(七)——基于XML配置文件方式的AOP

    除了前面介绍的基于JDK1.5的注解方式来定义切面,切入点和增强处理外,Spring AOP也允许直接使用XML配置文件来管理它们.在JDK1.5之前,只能使用配置文件的方式来管理,在Spring2.X后提供了一个新的aop命名空间来定义切面.切入点和增强处理.     相比之下,使用XML配置文件方式有如下优点: 如果没有使用JDK1.5以上版本,只能使用XML配置文件的方式 对早期的Spring用于来说更加习惯,而且这种方式允许使用纯粹的POJO来支持AOP 采用XML配置方式时,我

Spring中的AOP(二)——AOP基本概念和Spring对AOP的支持

AOP的基本概念     AOP从运行的角度考虑程序的流程,提取业务处理过程的切面.AOP面向的是程序运行中的各个步骤,希望以更好的方式来组合业务逻辑的各个步骤.AOP框架并不与特定的代码耦合,AOP框架能处理程序执行中特定切入点,而不与具体某个类耦合(即在不污染某个类的情况下,处理这个类相关的切点).下面是一些AOP的一些术语:     切面(Aspect):业务流程运行的某个特定步骤,也就是应用运行过程的关注点,关注点通常会横切多个对象,因此常被称为横切关注点     连接点(JoinPoi

Spring中使用AspectJ实现AOP

一,一些基本概念                Spring除了IOC容器之外,另一大核心就是AOP了.Spring 中AOP是通过AspectJ来实现的.                   首先来看下AOP 的相关概念:        1,Aspect                     对横切性关注点的模块化.         2,Advice                      对横切性关注点的具体实现        3,Cross Cutting Concern       

Spring中的AOP(六)——定义切入点和切入点指示符

定义切入点     在前文(点击查看)中使用到的AdviceTest类中同一个切点(即* com.abc.service.*.advice*(..)匹配的连接点)却重复定义了多次,这显然不符合软件设计的原则,为了解决这个问题,AspectJ和Spring都提供了切入点的定义.所谓定义切入点,其实质就是为一个切入点表达式起一个名称,从而允许在多个增强处理中重用该名称.     Spring AOP只支持以Spring Bean的方法执行组作为连接点,所以可以把切入点看作所有能和切入表达式匹配的Be

Spring中的设计模式学习

Spring提供了一种Template的设计哲学,包含了很多优秀的软件工程思想. 1. 简单工厂 又叫做静态工厂方法(StaticFactory Method)模式,但不属于23种GOF设计模式之一. 简单工厂模式的实质是由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类. Spring中的BeanFactory就是简单工厂模式的体现,根据传入一个唯一的标识来获得Bean对象,但是否是在传入参数后创建还是传入参数前创建这个要根据具体情况来定. 2. 工厂方法(Factory Method)

spring中配置事务管理的问题

问题描述 spring中配置事务管理的问题 我的Spring配置文件中加上下面的配置,程序启动就报404,是为什么? <tx:advice id="txAdvice" transaction-manager="transactionManager"> <tx:attributes> <tx:method name="get*" propagation="REQUIRED" read-only=&q

如何集成Perf4j到Java应用程序中并生成性能数据

在实际部署的生产环境能够以较低的风险及成本实现对业务逻辑级别性能问题的追踪.本文将介绍如何集成 Perf4j 到 Java 应用程序中并生成性能数据. 系统日志是应用程序问题诊断及运行维护的重要工具.Logback.Log4j 是常用于 Java 平台的日志记录 API. 目前大部分产品只是将系统重要参数.状态的变化及异常信息通过日志输出.本文将要介绍的 Perf4j 是一款专门用于 Java 服务器端代码计时.记录日志和监控结果的开源工具包.Perf4j 对常用日志工具包进行了扩展,能够将得到

Spring中AOP的原理?

问题描述 面试问Spring中AOP的原理?用到哪些技术?答:通过动态代理技术,然后简单说了些实现方式.这只是其中的一种,还有其他的吗?答:........求大哥们指点! 问题补充:suziwen 写道 解决方案 其实它的代理 :分为动态代理和静态代理解决方案二:spring 提供了多种不同的方案实现对 bean 的 aop proxy, 包括 ProxyFactoryBean, 便利的 TransactionProxyFactoryBean 以及 AutoProxyCreator 等, 下图是

Spring中的AOP(五)——定义切入点和切入点指示符

定义切入点     在前文(点击查看)中使用到的AdviceTest类中同一个切点(即* com.abc.service.*.advice*(..)匹配的连接点)却重复定义了多次,这显然不符合软件设计的原则,为了解决这个问题,AspectJ和spring都提供了切入点的定义.所谓定义切入点,其实质就是为一个切入点表达式起一个名称,从而允许在多个增强处理中重用该名称.     Spring AOP只支持以Spring Bean的方法执行组作为连接点,所以可以把切入点看作所有能和切入表达式匹配的Be