問題タブ [pointcut]
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.
spring - Spring の単純なポイントカット式
同じバージョンの Spring フレームワークで Spring security 3.2.0 を使用しています。Spring セキュリティは私のプロジェクトでうまく機能します。DAO クラス (およびその他) のメソッドを保護するために、(ファイル内で)次のポイントカットアプローチを使用したいと考えています。spring-security.xml
指定されたポイントカット式は、パッケージ内のすべてのクラスのすべてのメソッドを保護し、指定されcontroller
た権限を持つユーザーのみがアクセスできることを期待してROLE_ADMIN
います。
しかし、この式を使用しようとすると、spring-security.xml
ファイルの保存時に次の例外が発生してプロセスが終了します。
PropertyAccessException 1: org.springframework.beans.MethodInvocationException: プロパティ 'pointcutMap' が例外をスローしました。ネストされた例外は java.lang.IllegalArgumentException: Pointcut is not well-formed: Expect 'name pattern' at character position 26 execution( controller. .*(..)) ^
私は、「 3.4.1要素」セクションの「 protect-pointcut を使用してセキュリティ ポイントカットを追加する」サブセクションの参照ドキュメントで指定されているアプローチに従おうとしています。<global-method-security>
このシナリオで正しい式の構文は何ですか?
編集:
protect-pointcut を使用してセキュリティ ポイントカットを追加する
簡単な宣言だけで多くの Bean にセキュリティを適用できるため、protect-pointcut の使用は特に強力です。次の例を検討してください。
com.mycompany
これにより、クラスがパッケージ内にあり、クラス名が「サービス」で終わるアプリケーションコンテキストで宣言された Bean のすべてのメソッドが保護されます。ROLE_USER
これらのメソッドを呼び出すことができるのは、ロールを持つユーザーだけです。URL マッチングと同様に、最初に一致した式が使用されるため、最も具体的な一致がポイントカットのリストの最初に来る必要があります。セキュリティ アノテーションは、ポイントカットよりも優先されます。
参照ドキュメントで説明されているセクションをコピーして貼り付けます(ドキュメントをスクロールするのが面倒だと感じる人もいるかもしれません)。
java - ポイントカットでカバーされているメソッドはどれですか?
AspectJ のポイントカットでどのメソッドがカバーされているかを知ることは可能ですか?
この質問の背景は、すべてのメソッドをカバーするポイントカットがあることです(独自のものを除く):
アプリケーションが起動したら、ポイントカットの対象となるすべてのメソッドのメソッド シグネチャのリストを作成できるようにしたいと考えています。それは可能ですか?
spring - java.lang.IllegalArgumentException: ::0 でエラーが発生し、参照されたポイントカットが見つかりません
私はSpring AOPに本当に慣れていません。私のアプリケーションでは、メソッド パラメーターを HTTP メソッドに変換し、Spring がやなどHiddenHttpMethodFilter
の他の HTTP メソッドを処理できるように構成しました。DELETE
PUT
GET
POST
特にマルチパート リクエストを処理する場合は、この機能を無効にする必要がある場合があります。特定のリクエストで(mulripartに関して)無効にするために、次のコードを使用していました。
ファイルにapplication-context.xml
は、次の xml が必要です。
このコードは、この記事のセクション - MULTIPART RESOLVER DISABLING ASPECT から抜粋したものです。
上記のコードで指定されているように、パラメーターがクエリ文字列として使用されるHiddenHttpMethodFilter
場合にマルチパート処理を無効にすることを意図しており、通常どおり (クエリ文字列として指定された場合)コモンズ ファイルアップロードを使用できます。GET
multipartResolverDisable=1
multipartResolverDisable=1
実際の質問はまだ画像に含まれていません。このアプローチは、以前は次の環境 (NetBeans 6.9.1 を使用) で正しく機能していました。
- 春 3.2.0
- サーブレット API 2.5 を使用する Apache Tomcat 6.0.26.6。
最近、NetBeans 7.2.1 を Servlet API 3.0 を持つ Apache Tomcat 7.0.35 にアップグレードしました。Spring バージョンは以前と同じで、 Spring 3.2.0 です。
今回の更新により、上記のアプローチにより次の例外が発生しました。
上記isMultipartOperation()
のクラスの最後のメソッドです。
コードに小さな変更があるかもしれませんが、私は AOP についてほとんど知らないので、この見栄えの良いコードでこの例外の原因を突き止めることはできません。
この例外の原因は何ですか? サーブレット API で何かをする必要がありますか?
java - レガシーSpringアプリケーション-ポイントカット値はどういう意味ですか?
私は古いレガシーSpringアプリケーションを「継承」しました。現在、Spring 2.5を使用しており(一度アップグレードしただけです)、Spring3にさらにアップグレードすることを検討しています。
私はほとんどのアプリケーション構成を理解しています。私が「100%ではない」という部分は1つだけです。私はそれが何を意味するかを大まかに推測することができますが、私は絶対に確信する必要があるので、この質問を投稿します:
構成スニペットは次のとおりです(ここに示されていないアノテーション駆動型トランザクションマネージャーによって異なります)。
私の具体的な2つの質問は次のとおりです。
- 「execution(* .. ProductManager。(..))」とはどういう意味ですか(ポイントカットの用語を理解しています)
- アドバイスの属性セクションでは、すべてのsave *関連メソッドにトランザクションを適用すると言っていますが、すべての読み取り専用はfalseです。その設定が理にかなっている理由を誰かが説明できますか?トランザクションをサポートするすべてのメソッド(つまり、save *メソッドのみ)について、これらのメソッドを読み取り専用トランザクションにしないようにすることも、付加的で効果的に言えますか。または、包括的トランザクションフィルター(ポイントカットで定義)のすべてのメソッドに異なるもの(つまり、何らかの形式のトランザクションサポート)を適用していますか?
ご説明いただきありがとうございます。一般的な答えはありません。具体的な説明が必要です。
java - アスペクトのプライベート フィールドにアクセスする
オブジェクトのプライベート フィールドの名前を取得しようとしています。パッケージのパブリック フィールドに同じポイント カットを使用すると、正しく機能します。私のアスペクトは特権に設定されています。クラスのオブジェクトが更新されるフィールドが必要です。ポイントカット:
アドバイス:
ポイントカット例外内のこの行で例外が発生します。
spring - Spring AOP: JoinPoint と PointCut の違いは何ですか?
アスペクト指向プログラミングの概念と Spring AOP を学んでいます。Pointcut と Joinpoint の違いを理解できていません。どちらも同じように思えます。Pointcut はあなたのアドバイスを適用する場所であり、Joinpoint は私たちのアドバイスを適用できる場所でもあります。では、違いは何ですか?
ポイントカットの例は次のとおりです。
ジョインポイントの例は何ですか?
spring - この @Pointcut 式を機能させるにはどうすればよいですか?
ポイントカット式を使用したメソッドのアドバイスに本当に問題があります。私は次の構成を持っています:
春 3.1.2.RELEASE
pom.xml
サーブレット.xml
アドバイスしたいクラス
UserDao
インターフェイスを拡張するインターフェイスを実装しますGenericDao<T>
これが私のアドバイスです
これは機能しません。これは、UserDaoImpl の delete メソッドが実行されたときに、まったく傍受されないことを意味します。
Spring Documentation から、Spring プロキシがインターフェイスで動作することを読んだので、Pointcut 定義を次のように変更しようとしました。
しかし、何も変わりません。クラスの.delete()
メソッドをインターセプトするにはどうすればよいですか?UserDaoImpl
statistics - よく使われるポイントカット
一般的な AspectJ と AOP について:
最も使用されているポイントカット プリミティブは何ですか?
これに関する統計はありますか?
私はそれが可能だと思います、そうexecution
ですcall
か?
ありがとう。