首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AspectJ有什么好处?

AspectJ有什么好处?
EN

Stack Overflow用户
提问于 2010-11-30 12:34:23
回答 3查看 19.1K关注 0票数 49

首先,让我注意,我使用AspectJ,我喜欢它,但是我还能用它做什么呢?

我知道AspectJ可以/是用于日志记录。在某些情况下,它用于事务控制--大部分是与注释一起实现的。AspectJ也可以用于使用(代码生成的)方法增强类,就像Spring所做的那样。

但我认为AspectJ和AOP一般可以用于更多的方面:日志记录、事务控制和模拟部分类。

那么,对于和AspectJ,还有什么有用的用例呢?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-11-30 12:48:05

  • 许可检查
  • 中断需要太长时间的动作
  • 在单独的线程中,甚至在其他机器上不同进程或事件的上下文中运行操作。
  • 监控
  • 在呼叫前准备任何数据/环境,呼叫后处理结果
  • 开幕/闭幕资源

编辑

虽然我给出这个答案已经很多年了,但我决定添加以下内容,以使答案更加完整。

  • 安全检查。
  • 修正了错误的API或无法更改的API行为。例如,在某些条件下返回false但应该返回true的布尔方法。您可以使用AspectJ修复这个问题。
票数 42
EN

Stack Overflow用户

发布于 2010-11-30 12:43:28

维基百科条目为您提供了更多的示例(但不是那么多)。通常,面向方面的编程应该只用于实现不属于类的核心关注点的简单行为,这些行为对于不同的类是常见的。一旦您开始将太多的逻辑放在您的方面,代码就会变得非常不可读。

建议的方面(日志记录、事务处理、.)是最常用的。我也要加上安全措施。

票数 20
EN

Stack Overflow用户

发布于 2011-05-02 12:06:49

人们可以使用AspectJ来执行一些(设计)规则。

  • 就像每个控制器方法一样,需要一些特殊的注释。
  • 每个服务/前端/dto类必须位于服务/fronten/dto pacakge中。
  • 更成熟的想法是:检查setter没有任何逻辑。

将Mocks注入到类中,否则将通过使用new创建新实例。假设您有以下代码:

代码语言:javascript
复制
public void sendInvitationEmail(String address) {
    InvitationEmail email = new InvitationEmail();
    email.sendTo(address).send();
}

并且需要用模拟替换email。然后,您可以使用方面(@Pointcut("call(InvitationEmail.new(..))") )“注入”一个模拟。-- @见Daniel的博客JMock和AspectJ,以及Spring的@MockStaticEntityMethods (使用Spring方面的模拟静态方法)

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4313789

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档