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

如何配置Spring AOP以使用AspectJ

赵开诚
2023-03-14
public void login(params) {
    some logic ... 
    performLogin();
    some logic ...
}

@Measured
public void performLogin() {
     some logic ...
}

这是一个已知的问题,因为Spring AOP使用的是基于代理的方法,该方法不会“看到”同一个类中的内部调用。显然我可以通过使用AspectJ而不是Spring AOP来解决这种情况。如果我没有理解错的话,它可以从Spring内部进行配置。从我的发现来看,我应该包含@enableaspectjautoproxy注释来配置Spring使用AspectJ而不是自己的AOP。不幸的是,这没有帮助,在添加注释之后,没有发生对被注释的方法的拦截。

Spring参考文档中有很多关于这个主题的信息,我有点迷路了。为了使用AspectJ,我还需要做什么吗?

附注。请注意,我不能重构整个类并将调用方法移到外面。

共有1个答案

孙星鹏
2023-03-14

代理只能实现实际AspectJ系统全部功能的一个子集,基本上是包装方法的建议。由于其性质,代理具有以下限制:

  • 仅对外部呼叫进行拦截(突破代理边界时)
  • 仅截取公共成员(不能截取私有/受保护成员)对本地呼叫(或具有此或超级的呼叫)不知情

是不够的--它只包装方法,您需要这样的东西:

 类似资料:
  • 我正在尝试了解如何使用Spring。 我试着效仿这个例子。但是,当我从Eclipse启动Tomcat时,我得到了以下错误: 这是DispatcherServlet的相关代码。xml salvaUtente()是一种方法,我将在其中处理多个插入(现在仍然是exmpty)。

  • 问题内容: 我已经为我的应用程序设置了Resque.redis.namespace,现在resque-web不再显示辅助程序和队列。 有什么方法可以使resque-web知道redis.namespace或理想情况下是多个redis namspace? 问题答案: 假设您在中设置了Resque.redis.namespace 。比您可以运行resque- web将此路径作为命令行参数传递给该文件,

  • 我们正在使用cloudfront为具有自定义域的图像提供服务。 我们希望能够使用SSL访问它们,例如

  • 本文向大家介绍SpringAOP中的注解配置详解,包括了SpringAOP中的注解配置详解的使用技巧和注意事项,需要的朋友参考一下 这篇文章主要介绍了SpringAOP中的注解配置详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 使用注解实现SpringAOP的功能: 例子: xml配置:注意给例子中使用的其他的类上面也使用注解 注意:<aop

  • 问题内容: 如何使Grails 3.1.1用户成为Hibernate 5? 以下操作报告了Hibernate版本4.3.11.Final:在Grails 3.1.1中 grails创建应用hello311 编辑BootStrap.groovy,如下所示 Grails运行应用 控制台显示:Hibernate版本为:4.3.11.Final 我的build.gradle未编辑。create-app命令

  • 问题内容: 我正在尝试使用axios向api端点发出请求,但出现以下错误: 似乎axios使用的https模块无法验证服务器上使用的SSL证书。 使用浏览器访问服务器时,证书有效,我可以查看/下载该证书。我还可以通过https向浏览器上的api请求。 我可以通过关闭验证来解决此问题。此代码有效。 问题是,这不验证SSL证书,因此打开了安全漏洞。 如何配置axios以信任证书并正确验证它? 问题答案