1

-javaagent:pathto/aspectjweaver.jarSpring AOPを使用するスタンドアロンJavaアプリケーションの場合、 AOPサポートを「オンにする」などのJVM引数を要求する必要がありますか?いつそうしたい、またはそうする必要がありますか?

明確にするために、「スタンドアロン」とは、Mavenで構築された実行可能な.jarを意味します。これは、さまざまなプラットフォームで呼び出されます。

4

4 に答える 4

4

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>

そうすることで、クレイジーな Spring AOP のケースをすべてカバーし、プライベートなトランザクション メソッドもカバーします。

于 2012-12-08T23:00:44.510 に答える
4

場合によります。Spring AOP を使用して粗粒度のインターセプトのみを行う場合 (つまり、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>

これでは不十分で、たとえば、Bean 内呼び出しを通知するためにロード時のウィービングが必要な場合は、Spring 3.0 のドキュメントで説明されているように、JVM 引数を追加する必要があります。

汎用 Java アプリケーション

Spring が提供するインストルメンテーション エージェントを使用して、任意の Java アプリケーション (スタンドアロンおよびアプリケーション サーバー ベース) で Spring の LTW のサポートを有効にすることができます。これを行うには、 -javaagent:path/to/spring-agent.jar オプションを指定して VM を起動します。これには、VM 起動スクリプトを変更する必要があるため、アプリケーション サーバー環境でこれを使用できない場合があることに注意してください (運用ポリシーによって異なります)。

ここを参照してください http://static.springsource.org/spring/docs/3.0.0.RC2/reference/html/ch07s08.html#aop-aj-ltw-environments

于 2012-06-13T18:34:20.317 に答える
1

ここで詳細なドキュメントを確認してください http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/aop.html#aop-aj-ltw。場合によります。

于 2012-06-13T18:20:26.370 に答える
0

通常、クラスパスに weaver jar を含めるだけで十分です。

于 2012-06-13T17:12:34.023 に答える