当前位置: 首页 > 知识库问答 >
问题:

Spring AOP不能在Spring SOAP Web服务上工作

景康安
2023-03-14

我有一个spring soap web服务,我想使用自定义日志记录方面来度量它的性能。对于普通的spring bean来说,这个方面工作得很好,但是对于Endpoint-InvokeInterral方法,这个方面没有被调用。像保护方法一样在Spring有什么限制吗?谢谢你帮我把它弄好?

代码示例:

@Component
@Aspect
public class AspectLogging {

    @Around(value = "execution(* *(..)) && @annotation(logTime)", argNames = "logTime")
    public Object logAround(ProceedingJoinPoint joinPoint, LogTime logTime) throws Throwable {
            // Time logging goes here...
    }
}
<aop:aspectj-autoproxy proxy-target-class="true"/> 
<!-- Aspect -->
<bean id="aspectLog" class="com.x.y.AspectLogging" /> 

Spring WS终结点:

public class MyEndPoint extends AbstractJDomPayloadEndpoint {
    @LogTime
    protected Element invokeInternal(Element request) throws Exception {
        // Service call goes here...
    }
}

更新:将访问修饰符更改为public,这是否意味着Spring允许AOP只适用于public方法?

共有1个答案

督弘化
2023-03-14

更新:将访问修饰符更改为public,这是否意味着Spring允许AOP只适用于public方法?

Spring AOP知道创建动态代理的两种方法:

  • JDK动态代理:这是默认值,但只适用于接口(或实现它们的Spring组件类),并且只适用于这些接口中定义的公共方法。
  • CGLIB代理:这必须通过 (或等效的配置注释)激活,您已经对接口和类进行了操作。因此,如果有一个类实现了一个接口,您可以期望只有在该接口中定义的公共方法是代理,就像使用JDK代理一样。我想这取决于您如何定义Spring bean的类型。确保真正实例化类类型,而不是接口类型。那么受保护或包范围的方法也应该由CGLIB代理(只是不是私有方法)。因此,如果操作正确,这应该会起作用。

我不是说你在这里使用一个不推荐使用的基类和同样不推荐使用的方法,只是在回答你的问题...

 类似资料:
  • 检测到问题! 如果没有配置的空闲端口,MySQL将无法启动!您需要卸载/禁用/重新配置阻塞应用程序,或者重新配置MySQL和控制面板以在不同的端口上侦听

  • 我有一个在远程服务器上运行的spring boot应用程序。当我构建它在HTTP上工作时,一切工作都很好。但当我试图设置SSL时,应用程序不能工作。它不会抛出错误或任何东西。但我无法访问浏览器中的任何页面(我尝试了https://www.example.com、https://www.example.com:8443、https://example.com等)。 > 我已经从certificate

  • 我试图在Linux Red Hat Entreprise Linux release 5.11(Tikanga)服务器上安装GlassFish4.0。 因此,我按照以下网站说明成功地在该服务器上安装了Java JDK1.7.0_79和NetBeans4.0:https://blog.idrsolutions.com/2014/02/tutorial-setting-up-glassfish-on-

  • 传入我的应用程序ID。我在某处读到配置在解析服务器上不起作用,但想确认一下

  • 你好,我有一个我开发的dll。我在使用dll导入的网站中使用此dll。当我通过visual studio运行网站时,一切都正常。但当我用iis运行它时,它没有错误。请参阅所附代码。谢谢在这里输入图像描述

  • 我有一个应用程序,它使用一个在开发环境中工作的数据列表,但在生产环境中返回一个没有查找的空白字段。我想广泛使用datalist,因为它很容易提供一个自动完整的工具,但除非它在生产中工作。 Dev是在Win7下的IE11.0上的MVC VS 2010,在HTML5Test中得分302。产品是服务器2012 R2标准上的IE11.0,报告为Win8.1,在HTML5Test中得分为312分。 经过大量