Spring-Aspects中的aop.xml文件包含什么?

bkhjykvo  于 2024-01-05  发布在  Spring
关注(0)|答案(1)|浏览(126)

我为我的应用程序激活了aspectj加载时织入,并添加了一个定义方面的aop.xml文件。
我发现我的classpath上的spring-aspects jar也包含一个aop.xml文件,当我配置我的应用程序以aspectjweaver.jar作为java代理启动时,它会被加载。
看起来,这个文件是未使用的,当没有织入被激活时,但激活时会增加应用程序的启动时间。这个文件是用来做什么的?

fcwjkofz

fcwjkofz1#

你说的是this file。引用它的内容,稍微重新格式化:

  1. <?xml version="1.0"?>
  2. <!-- AspectJ load-time weaving config file to install common Spring aspects. -->
  3. <aspectj>
  4. <!--<weaver options="-showWeaveInfo"/>-->
  5. <aspects>
  6. <aspect name="org.springframework.beans.factory.aspectj.AnnotationBeanConfigurerAspect"/>
  7. <aspect name="org.springframework.scheduling.aspectj.AnnotationAsyncExecutionAspect"/>
  8. <aspect name="org.springframework.transaction.aspectj.AnnotationTransactionAspect"/>
  9. <aspect name="org.springframework.transaction.aspectj.JtaAnnotationTransactionAspect"/>
  10. <aspect name="org.springframework.cache.aspectj.AnnotationCacheAspect"/>
  11. <aspect name="org.springframework.cache.aspectj.JCacheCacheAspect"/>
  12. </aspects>
  13. </aspectj>

字符串
首先,谈到spring-aspects,你需要了解它使用的是原生的AOP J,而不是基于代理的Spring AOP。用于编织方面的技术称为加载时编织(LTW),即目标类字节码在类加载期间被一个编织代理转换,通常像这样添加到JVM命令行:

  1. java ... -javaagent:/my/aspectjweaver.jar -javaagent:/my/spring-aspects.jar


你看,你可以同时使用一个甚至多个代理。这是一个通用的、标准化的JVM机制。ANOJ只是碰巧使用它,就像许多其他Java代理一样。
Spring手册中有一章描述了how to use native AspectJ in Spring。一个简短的段落涉及aop.xml,进一步指向相应的AspectJ manual chapter
简而言之:

  • ANOJ LTW是可配置的。您配置它的方式是aop.xml文件。
  • 因此spring-aspects自带了自己的aop.xml文件,它列出了库中当前包含的六个方面。
展开查看全部

相关问题