我可以在 Scala 中进行面向方面编程吗?

发布于 2024-10-17 23:12:51 字数 102 浏览 3 评论 0原文

我不是在谈论模仿 Scala 中的 AOP 功能(即使用 Traits 而不是 Aspects),我想知道是否有可能在 Scala 中实现真正的 AOP(即建议、方面、联合点、编织等...)

I'm not talking about mimicking AOP features in Scala (i.e. using Traits instead of Aspects), I'm wondering if it is possible to do true AOP in Scala (i.e. advices, aspects, joint points, weaving etc ...)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

筑梦 2024-10-24 23:12:51

Mixin 是在 Scala 中引入 AOP 的经典方式(如“AOP -Scala 中的 Mixin 组合堆栈”,来自 Jonas Bonér)。

但我只知道“Scala 中基于方法代理的 AOP”( Daniel Spiewak - 也在 SO 上 - 和 Tian Zhu)作为 Scala 中的高级 AOP 实现(源代码在这里)。

我们的技术使用 Scala 的高阶函数来拦截方法调用,同时对基本程序施加最小的语法开销。
该框架允许开发人员通过指定类类型和方法签名来定义切入点。该框架还允许访问上下文变量,而方面可以在建议主体之前或之后插入建议代码。

Mixin has been the classic way to introduce AOP in Scala (as in "AOP-style Mixin Composition Stacks in Scala" from Jonas Bonér).

But I know only of "Method Proxy-Based AOP in Scala" (Daniel Spiewak -- also here on SO -- and Tian Zhao) as an advanced AOP implementation in Scala (source code here).

Our technique uses Scala’s higher-order functions to intercept method calls with minimal syntactic overhead imposed on the base program.
This framework allows developers to define pointcuts by specifying class types and method signatures. The framework also allows access to context variables, while aspects can insert advice code before or after the advised body.

深海里的那抹蓝 2024-10-24 23:12:51

我们在 Scala 类中使用 Spring AOP 没有任何问题。但它没有进行任何字节码修改(仅代理)。

We have had no problems using Spring AOP with our Scala classes. It's not making any bytecode modifications though (only proxying).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文