問題タブ [spring-aspects]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
1129 参照

java - Rest + Spring AOP + インターフェイスが注入されない

ロギングに使用される Spring AOP アスペクトがあり、次のように、アノテーションを追加することでロギングにメソッドを含めることができます。

私はSpring Beanでこれを使用してきましたが、うまく機能しています。さて、REST サービスで使用したかったのですが、いくつか問題が発生しました。ので、私は持っています:

このセットアップは問題なく機能します。私がロギングを追加しようとしているRestサービスにはインターフェースがあり、どういうわけか混乱しています。@AspectLoggingメソッドの 1 つにアノテーションを追加するとすぐに、依存関係は Bean に注入されず、アスペクトはより新しく呼び出されます!

機能する REST サービスにインターフェイスを追加しようとしましたが、同じエラーが発生します。

インターフェイスを持つことで、この種の問題がどのように発生するのでしょうか? アスペクトロガーは、他のインターフェイスを持つクラスで機能しますが、REST サービスの場合にのみ問題になるようです..

0 投票する
1 に答える
562 参照

spring - Spring Weaving: 自動プロキシのメソッド内でパラメーターとして使用される場合、@Configurable オブジェクトが正しく織り込まれない

spring 4.0.7 では、次の状況を考慮してください。

Eclipselink の場合、load-time-weaver を使用します。そのため、@EnableSpringConfigured と @EnableLoadTimeWeaving を同時に使用して、Springs @Configurable アノテーションを試してみました。

これは完全に機能し、Spring-Bean は構築中に POJO に完全に注入されます。これらの POJO の検証に関するコードを Bean の他の場所ではなく、これらの内部に保持したいので、この機能は役に立ちます。

Spring コンテキストの一部には、一部のパッケージにローカルであり、そこでのみ使用されるため、インターフェイスを実装しない Bean が含まれています。たとえば、FooLogicBean はその 1 つです。これが別の Bean に注入され、何らかのパフォーマンス測定アスペクトのような Spring-AOP-Aspect (not-aspectj) が実行パスにある場合、Spring は FooLogicBean の CGLIB 自動プロキシを作成し、それを注入します。これは完全に機能し、完璧に機能します。

FooLogicBean ( fooLogicBean.doValidate(myPojo); など) のメソッドのパラメーターとして @Configurable でアノテーションが付けられた POJO を実際に使用したい場合、それぞれ CGLIB プロキシとして問題が発生します。この場合、いくつかの重要な魔法が、その POJO がアスペクト j (Spring-aspects の AnnotationBeanConfigurerAspect) を介して織り込まれるのを阻止します。前述の doValidate() メソッドの呼び出しに関係なく、コードのどこにも織り込まれることはありません。

その POJO を FooLogicBean 内に作成するが、それをメソッド パラメーターとして使用しない場合、@Configurable により再び織り込まれます。

Autoproxy 作成コードを知らなくても、そのクラスが既に spring-aop で使用されている場合、なんらかの派手なマーキングルーチンが、aspectj によってクラスが検出されるのを妨げていると想定します。この場合のuseはAccessを意味します。

そのようなあいまいな星座で実験し、その解決策を知っている人はいますか?

前もって感謝します!

0 投票する
0 に答える
249 参照

eclipse - Spring 4.1.x は、AspectJ と spring-aspects を使用した Eclipse コンパイルを中断します

Eclipse、AspectJ、および Spring を使用して、コンパイル時の織り方を設定しています。私はこれを何年も問題なく使用しています。

Spring 4.0.7 から 4.1.0 (または 4.1.1) にアップグレードした後、/target フォルダーにクラスが生成されません。この問題は、スプリング アスペクトを参照する 1 つのプロジェクトにのみ影響します。

ワークスペースに他の AspectJ 対応プロジェクトがあり、同じコンパイラ設定などを使用していますが、独自のアスペクトを使用しています。これらは、Spring のバージョンに関係なく、引き続き通常どおりコンパイルおよび出力されます。

外部ビルド (Maven) は、Spring 4.0 と 4.1 の両方で正常に動作します。

ここではバージョンはあまり関係ないと思いますが、いずれにせよ、AspectJ 1.8.2、Java 1.7、Eclipse Luna SR1 を使用しています (最初の Luna リリースでも発生します)。

これはバグでしょうか、それとも何か不足していますか?

0 投票する
0 に答える
423 参照

gradle - Gradle AspectJ プラグインの問題

Maven から Gradle に移行して以来、Spring アプリケーションで大きな問題に直面しています。aspectj が機能しなくなりました。

たとえば、@Configurable(aspectj に依存する) で注釈が付けられたクラスには、依存関係が注入されません。

を置き換えるためにaspectj-maven-plugin、このプラグインを使用してみました: spring security code base から取得しましたが、Gradle 2.1 とは互換性がないようです...

また、ここで説明されているソリューションを適用しようとしました: http://architects.dzone.com/articles/working-gradle-spring-aspects無駄に。

Gradle + Spring を使用している人々がどのようにアスペクトを活用しているのか知りたいです...

誰でも親切にアドバイスできますか?

0 投票する
2 に答える
2905 参照

spring - AspectJ を使用する AOP が動作しない

私はSpring Frameworkが初めてで、AOPを理解するためにいくつかのサンプル例を試していました.これが私が今までやったことですが、うまくいきません.

問題は、<aop:aspectj-autoproxy />spring.xml に追加するとすぐにビルドが失敗し、null ポインター例外で Bean を作成できないということです。<aop:aspectj-autoproxy />しかし、タグなしでアプリを実行すると、正常に動作しますが、AOP はありません。

これが私のプロジェクトの詳細です。 ここに画像の説明を入力

ここでは、実行するメイン クラスである AopMain があります。LoggingAspect ここで、実際に前のアスペクトを定義 しました。上記の 2 つのモデルを実際に使用する 2 つのモデル Circle と Triangle ShapeService

そして、ここにそれらのコードを提供しています

AopMain:

ロギングアスペクト:

サークル:

}

三角形: 単一の属性名を持つ円と同じ

シェイプ サービス:

そして、ここに重要なファイル Spring.xml があります。

次のようにエラーが発生します。

しかし<aop:aspectj-autoproxy />、Spring.xml の行にコメントを付けてコードを実行すると、Bean を作成できます。何か足りないものがありますか?いくつかのライブラリですか、それともいくつかのライブラリの競合ですか?

何か関係がある<aop:aspectj-autoproxy />

0 投票する
1 に答える
526 参照

spring - Spring でのネイティブ AspectJ の問題

Spring 4 を使用して AspectJ のコンパイル時間の織り方をテストしています (機能するようになったら、プロジェクトで使用したいと考えています)。次のサービスクラスがあります。

そして、これが私のAspectJのアドバイスです:

Spring documentationに従って、AspectJ Compile time weaving を有効にしようとしています。私は注釈を使用しているので、このスレッドに記載されているアドバイスに従おうとしました。

アプリケーションを実行すると、sayHello2() に適用されているアドバイスが表示されません。私は何が欠けていますか?ここで何が間違っていますか?

github の完全なソース コード