第三方JAR中的Spring vs Aspects

时间:2018-11-11 00:11:16

标签: spring-boot aspectj load-time-weaving aspectj-maven-plugin compile-time-weaving

成员们,在我了解方面如何与Spring配合使用时,我似乎有一些灰色区域。需要您的帮助来了解一些事情。

我最近正在做一个作业,其中写了一个自定义的日志记录/审核框架。日志记录/审计部分需要在调用业务方法之前和之后执行,因此,Aspects是实现此目标的自然选择。我创建了一个单独的Java项目,实现了所有日志记录/审计逻辑,将该项目打包为一个JAR(我们将其称为ABC.jar),并且另一个Java / Spring项目(将该项目称为PQR)使用了这个JAR。 / p>

ABC.jar带有@AuditLoggable批注,并且PQR中的方法应带有此批注,以便执行日志记录/审核逻辑。

在Eclipse中,只要将ABC.jar作为依赖项添加到pom.xml中,就可以在@AuditLoggable注释方法之前和之后正确执行日志记录/审计逻辑。

但是,当我使用maven将PQR打包为JAR并运行我的应用程序时,我发现对于上面带有注释的方法,记录/审计逻辑根本没有执行。

我在Internet和SO上寻求了一些帮助,但是我发现很少的资源表明我需要使用“ aspectj-maven-plugin”,它可以在编译时将各方面编织到源代码中。我更新了pom.xml并添加了所需的插件,该插件可以使我的代码正常工作,并且在将PQR打包为JAR时按预期方式调用了方面。

几个问题-

1)为什么在Eclipse中运行项目PQR(春季启动主类->以Java应用程序运行)与通过命令行运行程序(mvn clean package && java -jar {路径到PQR.jar}?

2)由于我的观点出现在第三方JAR(ABC.jar)中,因此我需要使用Maven插件将其与我的项目编织在一起。但是,Spring和Hibernate库随附的注释如何开箱即用?为什么我不需要这个“编织”步骤来使用Spring / Hibernate库中的注释?从我的项目角度来看,即使这些库也是第三方库,对吧?

我知道各个方面如何与Spring配合使用以及Spring如何使用动态代理或cglib的概念,或者什么是加载时间vs编译时间vs运行时编织,但是我仍然需要了解所有这些部分如何与我上面描述的项目设置。

非常感谢大家!

0 个答案:

没有答案
相关问题