aop-关于AOP代理调用顺序的疑问

问题描述

关于AOP代理调用顺序的疑问

在学习AOP的代理对象机制,改了下源码,发现调用顺序不同,控制台的输出也不同。

直接上图:
JDKProxyFactory源码:

PersonServiceBean源码:

第一种调用顺序:

第二种调用顺序:

谁能解释一下这种代理方式的底层机制,和导致这两种调用顺序产生结果不同的原因?

时间: 2024-09-20 12:15:34

aop-关于AOP代理调用顺序的疑问的相关文章

Spring AOP源码分析(五)Spring AOP的Cglib代理

上一篇文章介绍了Spring AOP的JDK动态代理的过程,这一篇文章就要介绍下Spring AOP的Cglib代理过程,仍然是使用上一篇文章的工程案例.  JDK动态代理是由JdkDynamicAopProxy来生成代理对象的,Cglib则是由CglibAopProxy来生成代理对象的.JdkDynamicAopProxy.CglibAopProxy实现了AopProxy接口,如下:  ? 1 2 3 4 5 6 7 public interface AopProxy {       Obje

spring基础概念AOP与动态代理理解_java

一.代理模式 代理模式的英文叫做Proxy或Surrogate,中文都可译为"代理",所谓代理,就是一个人或者一个机构代表另一个人或者另一个机构采取行动.在一些情况下,一个客户不想或者不能够直接引用一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用. 以简单模拟事务的执行过程说明各种代理区别 1.1 静态代理 由程序员创建或由特定工具自动生成源代码,再对其编译.在程序运行前,代理类的.class文件就已经存在了. public interface PersonDao { vo

关于spring aop的cglib代理什么时候才起作用

问题描述 网上的文章都说 <aop:aspectj-autoproxy proxy-target-class="true"></aop:aspectj-autoproxy>配置了这句话的话就会强制使用cglib代理,如果proxy-target-class改成"false"的话就会先使用jdk动态代理如果不是接口来实现的话再使用cglib代理,但是我实验的时候如果proxy-target-class改成false的话永远是使用jdk动态代理啊

基类和子类的调用顺序(C#,java)

现在关于oo的编程思想已经越来越被大家接受,但是大家对一些基础化的东西不是很熟悉,比如基类和子类的调用顺序.在这里我以c#为例给大家讲解一下对于一个下面一段代码 public class baseClass { public string a="baseClass" ; public baseClass() { a="初始化baseClass"; } } public class ExtendClass:baseClass { private string b=&q

构建器的调用顺序

构建器调用的顺序已在第4章进行了简要说明,但那是在继承和多形性问题引入之前说的话. 用于基础类的构建器肯定在一个衍生类的构建器中调用,而且逐渐向上链接,使每个基础类使用的构建器都能得到调用.之所以要这样做,是由于构建器负有一项特殊任务:检查对象是否得到了正确的构建.一个衍生类只能访问它自己的成员,不能访问基础类的成员(这些成员通常都具有private属性).只有基础类的构建器在初始化自己的元素时才知道正确的方法以及拥有适当的权限.所以,必须令所有构建器都得到调用,否则整个对象的构建就可能不正确.

Groovy探索之MOP 十二 方法的调用顺序

我们知道,除了使用hook来拦截方法以外,我们还可以通过各种方式来实现方法.如,我们可以在类里直接实现方法:我们可以通过ExpandoMetaClass在运行期内添加方法:我们还可以通过ExpandoMetaClass在运行期内单独给一个对象添加方法. 所有的这些直接添加方法的途径,如果存在hook的话,都是要被hook拦截的.所以,我们可以说,系统是优先调用hook的. 而hook的调用顺序,我们在上一篇<Groovy探索之MOP 十一 运行期内覆盖invokeMethod>已经谈到过了.

在使用JAVA代理调用webservice的时候报错,请问有谁认识这中错。万分感激

问题描述 我在lotus使用java代理调用一个webservice,但是每次运行到Serviceservice=newService();的时候就报下面的错误2009-03-2422:01:38HTTPJVM:log4j:WARNNoappenderscouldbefoundforlogger(org.apache.axis.i18n.ProjectResourceBundle).2009-03-2422:01:39HTTPJVM:log4j:WARNPleaseinitializethelo

hook-CallNextHookEx可以修改钩子调用顺序吗

问题描述 CallNextHookEx可以修改钩子调用顺序吗 最近在学习windows HOOK 这个章节,从CallNextHook这个函数的字面来看,这个函数的作用是调用其他的HOOK,但是第一个参数是一个HOOK句柄,这个句柄是不是要调用的新HOOK呢?自己写的例子来看这个句柄好像有跟没有是一个效果呢

为什么要用rmi代理调用远程方法

问题描述 为什么要用rmi代理调用远程方法 为什么要用rmi代理调用远程方法,为什么不直接反序列化远程对象直接调用方法. 求解?