問題タブ [spring-aop]

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 投票する
4 に答える
19629 参照

java - Spring Bean の実際の Class オブジェクトを取得する

私はSpringを使って豆を注入しています。そして、Bean メソッドに注釈を付けるためにいくつかの注釈を使用しています (Security、TransactionManagement、ExceptionHanling、Logging)。問題は:

一部のメソッドに注釈を付け忘れていないかどうかを確認する JUnit テストを作成したいと考えています。しかし、Spring はメソッドに注釈を付けずに $ProxyXXX クラスを返します。

メソッドの注釈を取得したり、実際のクラス オブジェクトを取得するにはどうすればよいですか?

PS Spring 2.5.6、JDKDynamicProxy (CGLib ではない)

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

java - 春のAOPアフタースローvs.アラウンドアドバイス

特定のタイプのエラーをキャッチしてログに記録するアスペクトを実装しようとしたとき、私は当初、AfterThrowingのアドバイスを使用してこれが可能になると考えました。ただし、彼のアドバイスは例外をキャッチしていないようですが、例外を処理するための追加のエントリポイントを提供しているだけです。

問題の例外をキャッチする唯一のアドバイスは、AroundAdviceです-それか私が何か間違ったことをしました。

例外をキャッチしたい場合は、AroundAdviceを使用する必要があると誰かが断言できますか?私が使用した構成は次のとおりです。

この例では、単なる例であるため、すべての例外をキャッチしたことに注意してください。すべての例外を飲み込むのは悪い習慣ですが、現在のユースケースでは、重複するログロジックを避けながら、1つの特別なタイプの例外をログに記録する必要があります。

0 投票する
5 に答える
15066 参照

java - Spring AOP:アドバイスされたメソッドのアノテーションを取得する方法

Spring/AOPとアノテーションを使用して宣言型セキュリティを実装したいと思います。次のコードサンプルにあるように、アドバイスされたメソッドの実行を許可されるユーザーを定義するためのパラメーター「allowedRoles」を使用した制限付きアノテーションがあります。

さて、問題は、私のアドバイスでは、定義された注釈にアクセスできないことです。

上記のメソッドは常にnullを返します(アノテーションはまったく見つかりません)。これに対する簡単な解決策はありますか?

AspectJエージェントの使用について何か読んだのですが、このエージェントは使用したくありません。

0 投票する
3 に答える
8489 参照

java - アノテーションのみを使用したSpringAOPによるインターセプトメソッド

私のSpringコンテキストファイルには、次のようなものがあります。

abcUserExistsCheckは次のようになります。

そして、このようなもので傍受されているクラスは次のようになります。

これは機能します。UserExistCheckは、呼び出しがKlazzに渡される前に必要に応じて実行されます。問題は、これが私がそれを機能させる唯一の方法であるということです。コンテキストファイルの代わりに注釈を使用してこれを機能させることは、私の小さな頭脳にとってはやりすぎのようです。では...UserExistsCheckとKlazzのメソッドにどの程度正確に注釈を付ける必要がありますか?そして、私はまだ何か他のものが必要ですか?別のクラス?コンテキストファイルにまだ何かありますか?

0 投票する
3 に答える
4873 参照

java - Spring @Transactional メソッド - 参加トランザクション

1 つの dao には、2 つの @Transactional メソッドがあります。

明示的なプロパティを提供しない場合、

だったらどうなるんだろう

あるメソッドを別のメソッドの本体で実行しますか?

両方の方法が同じトランザクション内で実行されますか?

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

aop - Spring AOP を使用した Apache CXF REST サービス

Spring AOP で動作する Apache CXF JAX-RS サービスを取得しようとしています。簡単なロギング クラスを作成しました。

私のSpring構成(beans.xml):

メソッド getServletRequest() が呼び出されると、RestService で常に NPE を取得します。

aop 構成を削除するか、beans.xml からコメントアウトすると、すべて正常に動作します。

実際の Rest サービスはすべて、test.rest.RestService (クラス) を拡張し、getServletRequest() を呼び出します。CXF JAX-RS ドキュメントの例に基づいて、AOP を起動して実行しようとしています。私は何を間違っていますか?

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

java - メソッドの戻り値の型にアクセスする Spring aop ポイントカット式

多くのメソッドを持つサービス インターフェイスがあり、そのすべてが Request オブジェクトを受け取り、Response オブジェクトを返します。すべてのリクエスト オブジェクトには共通の祖先があり、すべての応答オブジェクトには異なる共通の祖先 (成功フラグとメッセージ フィールドがあります) があります。

ここで、アクセス許可などをチェックし、サービス呼び出しを実行し、何かが失敗した場合に失敗コードを含む Response オブジェクトを返すというアラウンド アスペクトが必要です。問題は、作成する Response オブジェクトのタイプを知る必要があることです。戻り値の型にアクセスできるポイントカット式はありますか? もしかして、こういうこと?

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

java - SpringでAOPを実装する方法

私はSpringを使用しており、AOPを実装する必要がありますが、まったく初めてです。誰でも私を助けることができますか?

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

java - トランザクションに aop ポイントカットのものを使用しようとしていますが、gettig エラーが発生し、休止状態も使用しています

トランザクションに aop ポイントカットを使用しようとしていますが、gettig エラーが発生し、休止状態も使用しています。私はこれに従っています:http://static.springsource.org/spring/docs/2.5.x/reference/transaction.html

その前に、私はhibernate + spring sessionFactoryなどを使用していました..

エラー :

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

java - 私はaspectjrt.jarも追加しましたが、Spring Aopポイントカットを使用するとエラーが発生します

この問題を解決できません エラー :

java.lang.IllegalStateException: ContainerBase.addChild: 開始: org.apache.catalina.LifecycleException: javax.xml.parsers.FactoryConfigurationError: プロバイダー org.apache.xerces.jaxp.SAXParserFactoryImpl が org.apache.catalina.core.ContainerBase に見つかりません.addChildInternal(ContainerBase.java:932) at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:912) at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:694) at com. com.sun.enterprise.web.WebContainer.loadWebModule(WebContainer.java:1605) の com.sun.enterprise.web.WebContainer.loadWebModule(WebContainer.java:1933) com.sun.enterprise.web.WebApplication.start(WebApplication. java:90) org.glassfish.internal.data.EngineRef.start(EngineRef.java:126) で org.glassfish.internal.data.ModuleInfo.start(ModuleInfo.java:241) at org.glassfish.internal.data.ApplicationInfo.start(ApplicationInfo.java:236) at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:339) com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:183) で org.glassfish.deployment.admin.DeployCommand.execute(DeployCommand.java:272) で com.sun.enterprise.v3.admin で.CommandRunnerImpl$1.execute(CommandRunnerImpl.java:305) at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:320) at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl. java:1176) (com.sun.enterprise.v3.admin.CommandRunnerImpl.access$900)(CommandRunnerImpl.java:83) (com.sun.enterprise.v3.admin)。CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1235) com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1224) com.sun.enterprise.v3.admin.AdminAdapter.doCommand( AdminAdapter.java:365) com.sun.enterprise.v3.admin.AdminAdapter.service(AdminAdapter.java:204) com.sun.grizzly.tcp.http11.GrizzlyAdapter.service(GrizzlyAdapter.java:166) com .sun.enterprise.v3.server.HK2Dispatcher.dispath(HK2Dispatcher.java:100) com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:245) com.sun.grizzly.http com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:693) の com.sun.grizzly.http.ProcessorTask の .ProcessorTask.invokeAdapter(ProcessorTask.java:791)。process(ProcessorTask.java:954) com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:170) com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:135) com.sun.grizzly .DefaultProtocolChain.execute(DefaultProtocolChain.java:102) at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:88) at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:76) at com. sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:53) com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:57) com.sun.grizzly.ContextTask.run(ContextTask.java:69) com で.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:330) com.java.lang.Thread.run(Thread.java:619) での sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:309)