我不是在谈论模仿Scala中的AOP功能(即使用Traits而不是Aspects),我想知道是否有可能在Scala中做真正的AOP(即建议,方面,关节点,编织等... )
答案 0 :(得分:28)
Mixin是在Scala中引入AOP的经典方式(如JonasBonér的“AOP-style Mixin Composition Stacks in Scala”)。
但我只知道“Method Proxy-Based AOP in Scala”(Daniel Spiewak - also here on SO - 和Tian Zhao)作为Scala中的高级AOP实现(source code here)。
我们的技术使用Scala的高阶函数来拦截方法调用,而基本程序的语法开销最小。
此框架允许开发人员通过指定类类型和方法签名来定义切入点。框架还允许访问上下文变量,而方面可以在建议主体之前或之后插入建议代码。
答案 1 :(得分:6)
我们使用Spring AOP和Scala类没有任何问题。它不会进行任何字节码修改(仅代理)。