我们正在尝试在我们的项目中评估 CDI 和 AspectJ。这里有人做过类似的事情吗?有人可以分享他们对使用 CDI 或 AspectJ 的看法,例如 1. 学习曲线 2. 不同服务器的可移植性 3. 可维护性 4. 调试
谢谢
这些实际上是非常不同的技术。CDI 是一个依赖注入堆栈(如 Spring 或 Guice),具有一些 AOP 特性(在典型用例中足够了)。AspectJ 是一种成熟的面向方面的编程语言,它并没有真正提供任何依赖注入特性。
.1. 学习曲线
这两种技术都有很多材料。CDI 是新的,但有很多关于它的嗡嗡声。例如,请参阅CDI AOP 教程:Java 标准方法拦截教程。
AspectJ 更古老,关于它的好书很少。但我会说它要求更高一些。
.2. 可移植到不同的服务器
CDI 是 DI 的 Java 标准。我们将看到越来越多的服务器实现它。AspectJ 是一种在字节码级别上工作的语言。它几乎适用于任何 JVM(移动、桌面、服务器、小程序……)
至于可维护性和调试——这些确实是不同的技术,所以我不会在这里深入比较它们。然而,CDI 是标准的 Java 代码,而 AspectJ 主要是字节码级别的代码生成。另一方面,AspectJ 生成的代码(堆栈跟踪、反编译)可能比使用 CDI 的大量反射代理和 CGLIB 生成的类更具可读性。