弹簧&x27;s AspectJ模式缓存与AspectJ模式事务
我的问题涉及Spring的AspectJ模式,特别是如何为以下各项启用它:弹簧&x27;s AspectJ模式缓存与AspectJ模式事务,aspectj,spring-aop,spring-data-jpa,spring-cache,Aspectj,Spring Aop,Spring Data Jpa,Spring Cache,我的问题涉及Spring的AspectJ模式,特别是如何为以下各项启用它: 事务管理 缓存 1) 我注意到,为了启用AspectJ模式进行事务管理,我只需执行以下操作: @Configuration @EnableTransactionManagement(mode = AdviceMode.ASPECTJ) 2) 然而,为了使用AspectJ模式进行缓存,似乎必须: -将以下jar放入Tomcat的lib目录:org.springframework:spring-instrument-Tom
@Configuration
@EnableTransactionManagement(mode = AdviceMode.ASPECTJ)
2) 然而,为了使用AspectJ模式进行缓存,似乎必须:
-将以下jar放入Tomcat的lib目录:org.springframework:spring-instrument-Tomcat
-在Tomcat的server.xml中添加以下行:
<Loader loaderClass="org.springframework.instrument.classloading.tomcat.TomcatInstrumentableClassLoader"/>
-最终能够使用AspectJ模式,如下所示:
@Configuration
@EnableCaching(mode = AdviceMode.ASPECTJ)
上面的说法对吗?如果是这样,为什么AspectJ模式缓存不同于AspectJ模式事务支持?您为
@EnableCaching
案例列出的额外配置并不比@EnableTransactionManagement
案例中的配置更需要。如果选择mode=AdviceMode.ASPECTJ
,这意味着它将使用ASPECTJ而不是CGLIB代理来实现事务管理/缓存功能。如果您启用了编译时编织,并将spring aspects-.jar
列为一个方面库,那么它应该是现成的(考虑到应用程序上下文中提供了所有其他必需的事务管理/缓存配置相关bean)。如果您不使用编译时编织,而是选择使用加载时编织,那么在命令行上使用-javaagent:/path/to/aspectjweaver-.jar
作为JVM参数就足够了。ReflectVeloadTimeWeaver
和TomcatInstrumentableClassLoader
仅在构建中未使用编译时编织,并且VM中不存在加载时编织代理,并且您仍然希望通过类加载进行加载时编织时才需要
@Configuration
@EnableCaching(mode = AdviceMode.ASPECTJ)