Java SpringAOP加载时编织是否需要JVM参数?
对于使用SpringAOP的独立Java应用程序,是否需要使用JVM参数,例如Java SpringAOP加载时编织是否需要JVM参数?,java,spring,jvm,aop,aspectj,Java,Spring,Jvm,Aop,Aspectj,对于使用SpringAOP的独立Java应用程序,是否需要使用JVM参数,例如-javaagent:pathto/aspectjweaver.jar来“打开”AOP支持?您希望或需要在何时这样做 很清楚,“standalone”是指一个Maven构建的、可执行的.jar;这将在各种平台上调用。通常,只在类路径中包含weaver jar就足够了。通常,只在类路径中包含weaver jar就足够了。查看更多文档。视情况而定 在这里查看更多文档。视情况而定 视情况而定。如果您使用SpringAOP只进
-javaagent:pathto/aspectjweaver.jar
来“打开”AOP支持?您希望或需要在何时这样做
很清楚,“standalone”是指一个Maven构建的、可执行的.jar;这将在各种平台上调用。通常,只在类路径中包含weaver jar就足够了。通常,只在类路径中包含weaver jar就足够了。查看更多文档。视情况而定 在这里查看更多文档。视情况而定 视情况而定。如果您使用SpringAOP只进行粗粒度的拦截(意味着您只想拦截对bean的外部调用,而不想拦截bean内部的调用),那么您根本不需要JVM参数。只需使用如下代码:
<bean id="myInterceptor" class="com.company.interceptors.MyInterceptor"></bean>
<aop:config>
<aop:pointcut id="myPointcut"
expression="execution(* com.company.services..MyService.*(..))" />
<aop:advisor pointcut-ref="myPointcut"
advice-ref="myInterceptor" />
</aop:config>
这要看情况而定。如果您使用SpringAOP只进行粗粒度的拦截(意味着您只想拦截对bean的外部调用,而不想拦截bean内部的调用),那么您根本不需要JVM参数。只需使用如下代码:
<bean id="myInterceptor" class="com.company.interceptors.MyInterceptor"></bean>
<aop:config>
<aop:pointcut id="myPointcut"
expression="execution(* com.company.services..MyService.*(..))" />
<aop:advisor pointcut-ref="myPointcut"
advice-ref="myInterceptor" />
</aop:config>
考虑通过maven使用编译时编织:
<properties>
<aspectj.version>1.6.12</aspectj.version>
</properties>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>aspectj-maven-plugin</artifactId>
<version>1.4</version>
<dependencies>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjtools</artifactId>
<version>${aspectj.version}</version>
</dependency>
</dependencies>
<configuration>
<source>1.7</source>
<target>1.7</target>
<complianceLevel>1.7</complianceLevel>
<aspectLibraries>
<aspectLibrary>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
</aspectLibrary>
</aspectLibraries>
</configuration>
<executions>
<execution>
<goals>
<goal>compile</goal>
<goal>test-compile</goal>
</goals>
</execution>
</executions>
</plugin>
1.6.12
org.codehaus.mojo
aspectj maven插件
1.4
org.aspectj
aspectjtools
${aspectj.version}
1.7
1.7
1.7
org.springframework
春季方面
编译
测试编译
这样做涵盖了所有疯狂的Spring AOP案例,甚至包括私有事务方法。考虑通过maven使用编译时编织:
<properties>
<aspectj.version>1.6.12</aspectj.version>
</properties>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>aspectj-maven-plugin</artifactId>
<version>1.4</version>
<dependencies>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjtools</artifactId>
<version>${aspectj.version}</version>
</dependency>
</dependencies>
<configuration>
<source>1.7</source>
<target>1.7</target>
<complianceLevel>1.7</complianceLevel>
<aspectLibraries>
<aspectLibrary>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
</aspectLibrary>
</aspectLibraries>
</configuration>
<executions>
<execution>
<goals>
<goal>compile</goal>
<goal>test-compile</goal>
</goals>
</execution>
</executions>
</plugin>
1.6.12
org.codehaus.mojo
aspectj maven插件
1.4
org.aspectj
aspectjtools
${aspectj.version}
1.7
1.7
1.7
org.springframework
春季方面
编译
测试编译
这样做涵盖了所有疯狂的Spring AOP案例,甚至包括私有事务方法