我们的项目app-ui
和app-services
中有两个模块。 app-ui
是一个组件项目遵循基于弹簧的实施,app-services
有 RESTFUL 和 SOAP服务遵循基于 Java EE 6 的实现。我们希望启用安全性、日志记录和整个模块的异常处理方面。
我们面临以下问题:
- Spring aop 仅在 app-ui 中运行良好。在应用程序服务方面,我们尝试使用加载时间编织和弹簧桥接但没有成功,只有当beans.xml(Java EE 6)不存在于项目中。
- 我们尝试了Java EE全局拦截器(放在ejb-jar.xml中),它仅适用于EJB。因此,它无法在应用程序 UI 中工作。
有没有办法开发应用-UI 和应用服务的共同方面?
直接使用 AspectJ 而不是 Spring 特定的支持,它应该可以正常工作,这允许开发在 Spring 和 Java EE 中都有效的方面。
有三种方法可以将AspectJ方面编织到代码中:
-
编译时编织,这意味着我们需要有代码
-
字节码编织可用于没有代码的第三方 jar
加载时 编织(不是特定于弹簧的支持)可用于在类加载时编织方面,这可能更具侵入性,因为它需要 JVM 范围的代理和对服务器启动脚本的访问。
LTW的弹簧支持允许以更方便的方式使用LTW,但它仅适用于弹簧应用,与上面的LTW通用机制不同。
因此,如果直接使用 LTW 太麻烦,字节码编织和编译时编织仍然是有效的选择,尽管对构建过程有影响。