-
Spring AOP动态代理20
本人最近因工作需求学习了下应用AOP,遇到一个很棘手的Spring AOP应用问题,希望各位大牛能帮忙提点。
问题如下,现在做一个迁移项目,要把原来的一个登录机制改为spring 动态代理拦截。我直接把他原来的登录机制去掉是可以运行的,一旦加上aop配置就报错,是前台报的。
错误信息如下:
(mx.rpc::Fault)#0
content = (null)
errorID = 0
faultCode = "Server.ResourceUnavailable"
faultDetail = "Method 'getGlobalData' not found."
faultString = "Cannot invoke method 'getGlobalData'."
message = "faultCode:Server.ResourceUnavailable faultString:'Cannot invoke method 'getGlobalData'.' faultDetail:'Method 'getGlobalData' not found.'"
name = "Error"
rootCause = (null)
项目主要用到flex+spring+oracle技术,其中flex应用了cairngorn框架。
我的aop配置如下:
<bean id="flexRoAdvice" class="com.ssgm.ficoms.controller.flex.FlexROAdvice" />
<bean class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
<property name="beanNames">
<list>
<value>flexRO</value>
</list>
</property>
<property name="interceptorNames">
<list>
<value>methodNameAdvisor</value>
</list>
</property>
</bean>
<bean id="methodNameAdvisor" class="org.springframework.aop.support.DefaultPointcutAdvisor">
<property name="pointcut" ref="methodNamePointcut" />
<property name="advice" ref="flexRoAdvice" />
</bean>
<bean id="methodNamePointcut" class="org.springframework.aop.support.NameMatchMethodPointcut">
<!-- <property name="mappedNames"> <list> <value>getUserAuthori*</value>
<value>getGlobalData</value> </list> </property> -->
<property name="mappedName" value="getUserAuthorization" />
</bean>
希望各位大牛给予帮助?小弟在此谢过
问题补充:额。。。没人
问题补充:getGlobalData方法是flexRO类的一个public方法2012年9月24日 13:13
4个答案 按时间排序 按投票排序
-
采纳的答案
1、估计是 因为接口代理造成的,即flexRO实现了一些接口 但这些接口中没有getGlobalData。
2、改成cglib代理即可。需要添加cglib jar包
bean class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
<property name="beanNames">
<list>
<value>flexRO</value>
</list>
</property>
<property name="interceptorNames">
<list>
<value>methodNameAdvisor</value>
</list>
</property>
<property name="proxyTargetClass" value="true"/>
</bean>2012年9月24日 15:10
-
Cannot invoke method 'getGlobalData'.' faultDetail:'Method 'getGlobalData' not found.'"
提示你这个方法有问题,没有找到 getGlobalData2012年9月24日 13:31
相关推荐
### Spring框架+SpringAOP动态代理 #### 一、Spring AOP 动态代理概述 在探讨Spring AOP(Aspect-Oriented Programming,面向切面编程)中的动态代理之前,我们首先简要回顾一下AOP的基本概念。面向切面编程是一种...
Spring AOP支持不同的代理策略,包括JDK动态代理和CGLIB代理。如果被代理的类没有实现接口,Spring AOP会采用CGLIB来生成代理对象。CGLIB(Code Generation Library)是一个开源的代码生成库,它允许运行时在内存中...
在Spring中,AOP主要通过两种动态代理技术实现:JDK动态代理和CGLIB动态代理。 首先,让我们详细了解一下JDK动态代理。JDK动态代理基于Java的接口实现,它适用于目标对象实现了至少一个接口的情况。在运行时,JDK...
在Spring框架中,AOP(面向切面编程)就是基于Java动态代理来完成的,用于实现横切关注点,如日志、事务管理等。这篇博客的文章链接虽然没有给出具体内容,但我们可以根据Java动态代理和Spring AOP的基本概念来深入...
Spring AOP 的本质其实就是实现了动态代理,这个和Aspectj不一样,AspectJ 是直接修改你的字节码 完成的 代理模式其实很简单 主要包括 接口+真实的实现类+代理类 在真实类的实例化的时候 使用代理类,所以需要 ...
动态代理则是Spring AOP实现的核心技术之一,它允许我们在运行时创建具有额外行为的对象。下面将详细阐述Spring AOP的配置以及动态代理的实现。 一、Spring AOP基础知识 1. **什么是AOP**:AOP是一种编程范式,...
Spring AOP会为每个目标对象创建一个子类,并覆盖其方法,添加AOP代理逻辑。 4. **代理模式的创建**:Spring AOP 使用`org.springframework.aop.framework.ProxyFactoryBean`或`@EnableAspectJAutoProxy`注解来配置...
在 Spring 中,AOP 的实现主要依赖于代理模式,有两种代理方式:JDK 动态代理和 CGLIB 动态代理。 JDK 动态代理是基于接口的,它要求被代理的目标对象必须实现至少一个接口。Spring 使用 `java.lang.reflect.Proxy`...
Spring框架是Java中实现AOP的一个流行工具,它通过动态代理机制实现了这一功能。本文将深入探讨Spring AOP的实现原理,以及如何使用反射来实现动态代理模式。 首先,我们需要了解AOP的基本概念。AOP的核心思想是切...
`aop-jar`这个压缩包可能包含了Spring AOP的实现类、接口、以及其他相关的辅助类,例如动态代理类、切点匹配器等。在项目中,我们通常会将这个jar包引入到类路径下,以便使用Spring AOP的功能。 总的来说,Spring ...
5. AOP代理的使用:当通过Spring的依赖注入(DI)获取到一个对象时,实际上得到的是一个代理对象。通过这个代理对象调用方法,Spring会自动插入预先定义好的通知逻辑。 总的来说,JDK动态代理是Spring AOP实现的...
本篇将详细讲解Spring中的AOP实现,特别是JDK动态代理的应用。 首先,我们要了解什么是AOP(Aspect Oriented Programming,面向切面编程)。AOP是一种编程范式,旨在解决应用程序中分散的、横切关注点的问题,如...
Spring AOP代理是框架为实现切面功能创建的对象,它在运行时实现切面协议。Spring提供了两种代理方式:JDK动态代理和CGLIB代理。JDK代理适用于那些实现了接口的类,而CGLIB代理则适用于没有实现接口的类。 引介...
本篇文章将深入探讨Spring AOP中的动态代理、责任链模式以及注解的使用。 首先,动态代理是实现AOP的关键技术之一。在Java中,有两种主要的动态代理实现方式:JDK动态代理和CGLIB。JDK动态代理基于接口,当目标类...
4. **应用场景**:AOP动态代理常用于框架开发,例如Spring AOP。Spring AOP提供了基于代理的实现,可以在不修改原始代码的情况下,为业务方法添加额外的功能。此外,它还支持基于注解的切面定义,使得AOP的使用更加...
1. **代理**:Spring AOP支持两种类型的代理:JDK动态代理和CGLIB代理。JDK代理用于实现了接口的类,而CGLIB代理则用于没有接口或不希望使用接口的类。代理对象在调用目标方法时会执行切面逻辑。 2. **织入**:织入...
- 在Spring AOP中,有两种动态代理方式:JDK动态代理和CGLIB代理。JDK代理适用于目标对象实现了一个或多个接口的情况,而CGLIB代理则在目标对象没有接口或者接口数量多且复杂时使用。 - Spring会根据目标对象是否...
本篇文章将详细探讨如何通过Java的动态代理机制来模拟Spring AOP的核心概念。 首先,让我们了解什么是动态代理。在Java中,动态代理主要由`java.lang.reflect.Proxy`类和`java.lang.reflect.InvocationHandler`接口...
Spring AOP主要通过两种方式实现:JDK动态代理和CGLIB代理。 - **JDK动态代理**: - 当目标对象实现了至少一个接口时,Spring会使用JDK的java.lang.reflect.Proxy类创建一个代理对象。 - 代理对象在调用实际方法...
在测试方法中,可以注入需要的bean,然后调用方法来触发AOP代理。这样,通知将在适当的时候被调用,我们可以验证其预期行为。 为了更深入地理解这些概念,你可以查看压缩包中的具体代码,例如,`ExampleAspect`类...