Spring 从静态方法调用AOPContext.currentProxy()
我正在@service类实现中使用Spring的AOPContext.currentProxy()。然而,我在一个静态的方法中使用它,我做了如下的事情Spring 从静态方法调用AOPContext.currentProxy(),spring,spring-mvc,spring-aop,Spring,Spring Mvc,Spring Aop,我正在@service类实现中使用Spring的AOPContext.currentProxy()。然而,我在一个静态的方法中使用它,我做了如下的事情 public static void addCustomer() { //.... ((CustomerService) AopContext.currentProxy()).addCustomer(); //... 但是,我得到一个错误--“找不到代理”将expose proxy设置为true 使用静态方法是这种错
public static void addCustomer() {
//....
((CustomerService) AopContext.currentProxy()).addCustomer();
//...
但是,我得到一个错误--“找不到代理”将expose proxy设置为true
使用静态方法是这种错误的原因吗
注意:“addCustomer”方法也是静态的
提前感谢。您的配置是否包含类似于
的内容?您的配置是否包含类似于的内容?我不确定您想做什么,但您根本无法这样做
静态
方法的调用在编译时解析,因此它们不会受到基于代理的AOP的影响。换言之:
AopContext.currentProxy()
在静态方法中没有意义(除非您想获得一个用于封装某个实例方法调用的代理),因为静态方法的调用没有代理
- 对
AopContext.currentProxy()
返回的实例调用静态方法没有意义,因为它是在编译时使用静态类型的表达式解析的,即编译成CustomerService.addCustomer()
我不确定你想做什么,但你根本不能这样做
静态
方法的调用在编译时解析,因此它们不会受到基于代理的AOP的影响。换言之:
AopContext.currentProxy()
在静态方法中没有意义(除非您想获得一个用于封装某个实例方法调用的代理),因为静态方法的调用没有代理
- 对
AopContext.currentProxy()
返回的实例调用静态方法没有意义,因为它是在编译时使用静态类型的表达式解析的,即编译成CustomerService.addCustomer()
在创建实例时插入代理配置。假设使用此代理创建的实例调用的方法AOP适用于该方法。假设在没有代理实例或使用类名(在静态情况下)的情况下,您正在调用该方法,但直接调用代理配置未注入实例,因此AOP不适用于该方法调用。代理配置在创建实例时注入。假设使用此代理创建的实例调用的方法AOP适用于该方法。假设在没有代理实例或使用类名(在静态情况下)的情况下,您正在调用该方法,但直接调用代理配置未注入实例,因此AOP不适用于该方法调用。这是一个大错误,我在现有代码中发现了它,并希望检查这种方式是否确实错误。静态方法与bean不关联,因此无法通过调用AopContext.currentProxy()获取代理。我write@axtavt:我现在无法测试它,但我不明白为什么在静态方法中调用AopContext.currentProxy()
。它从线程局部变量获取其值。也许这让人困惑,或者不是用户所期望的,但我认为它一定能工作。这是一个很大的错误,我在现有代码中发现了它,并想检查这样做是否确实是错误的。静态方法与bean不关联,因此无法通过调用AopContext.currentProxy()获取代理。我write@axtavt:我现在无法测试它,但我不明白为什么在静态方法中调用AopContext.currentProxy()
。它从线程局部变量获取其值。也许这让人困惑,或者不是用户所期望的,但我认为它必须起作用。