問題タブ [aspectj]

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

hibernate - Hibernate Annotation + AspectJ -> HQL の属性名 pbs

アスペクトを使用して、休止状態の注釈付きクラスにパラメーターを挿入する方法を探しています。

これがユーザーです:

これがそのユーザーに貢献する側面です

今、私はリクエストをしたいと思います:

私が次のようにしている場合:

「ユーザーから」私はresult.getCityName()のように問題はありません。

「from User where cityName=?」を実行すると、うまくいきません...

アスペクトの揺れによるものです。プライベートな String cityName を hibernate の "cityName" に関連付ける代わりに、class$ajc$intertype$interface$cityName のような使用できないインタータイプ名に関連付けます。

これを回避する方法はありますか?hql属性名の関連付けを変更しますか?

どうもありがとうございました !

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

spring - 使用上の質問: Spring AOP と AspectJ の織り方

Spring AOP を使用してレガシー アプリケーションのプロファイリングに取り組んでおり、必要な決定に関するデータ ポイントを取得したいと考えています。

これは私がこれまでに行ったことです。Spring コンテナーによって管理されている Bean のプロファイルを作成するのに役立つ Spring AOP を使用してコードと構成を作成しました。

dao レイヤーのプロファイリング中に、レガシー アプリが c3p0 フレームワーク、具体的にはComboPooledDataSourceクラスを使用していることがわかりました。このクラスは最終クラスであるため、Spring AOP をこれ以上使用することはできません。cglib は最終クラスのプロキシを作成できないためです。

この障害に直面して、私はアスペクト コンパイル タイム ウィービング テクニックを使用することを計画しています。これが正しい決定であるかどうか、または Spring AOP 自体を使用してこの問題を克服する他の方法があるかどうかを知りたいです。私にお知らせください。

構成情報:

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

java - AspectJ 初心者の質問

私はAspectJを学び始めています。チュートリアルを読んで、コンパイル済みのクラス ファイルにアスペクトを組み込むことができることを知りました。ただし、コンパイルされたクラス ファイルを別のファイルに記述されたアスペクトとマージできるコマンドがわかりません。もう 1 つ、アスペクトを *.aj ファイルに記述することは必須ですか? ありがとうございました

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

java - AspectJを使用したSpringSourceToolSuiteの構成

.ajSpringSource Tool Suite(ver 2.3.0)Springプロジェクトが(AspectJ)ファイルを受け入れるように構成するにはどうすればよいですか?

現在、.ajファイルを認識していません。

*.ajまた、AspectJプロジェクトではなく、Springプロジェクトであるため、ファイルを追加できません。

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

eclipse - Eclipse RCP/RAPプロジェクトのspring-rooエンティティを使用する方法

SpringとAspectJを多用したspring-rooを使ってドメインモデルを作成しました。私のモデルはOSGiバンドルとしてうまくデプロイされており、Spring STS(Eclipseベース)IDEから、エンティティークラスなどを呼び出すことができます。

Eclipse RCP / RAPアプリケーションからこれらのドメインクラスにアクセスする必要があります。このプロジェクトは、RCP /RAP開発用に通常のEclipseIDEに保持されます(つまり、すべてのPDEツールがあります)。STSプラグインとAspectJプラグインも追加しました。

ドメインバンドルをターゲットプラットフォームに追加し、EclipseRAPアプリをそれに依存させました。RAPアプリケーションを実行すると、ドメインバンドルがOSGiにデプロイされている(つまり、アクティブである)ことがわかります。また、依存関係を追加したときに、PDEエディターに存在することもわかります。

ただし、ドメインクラスのいずれかをインポートして使用しようとすると、何も取得されません。Javaファイルエディタからドメインパッケージを見ることさえできません。

RAPプロジェクトにAspectJとSpringの性質を追加しようとしましたが、それでも何もありません。

また、Eclipse RAPアプリケーションを実行すると、次の例外をスローするRAPアプリケーションを除いて、すべてが正常にデプロイされます。

2010年3月2日2:44:58AMorg.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions情報:URLからのXMLBean定義のロード[bundleentry://168.fwk1096264275/META-INF/spring/applicationContext.xml]例外スレッド「SpringOsgiExtenderThread-2」java.lang.IllegalStateException:BeanFactoryが初期化されていないか、すでに閉じられています-org.springframework.context.support.AbstractRefreshableApplicationContext.getBeanFactory(AbstractRefreshableApplicationContext.java:171)のApplicationContextを介してBeanにアクセスする前に「refresh」を呼び出します。 org.springframework.osgi.internal.dependencies.startup.DependencyWaiterApplicationContextExecutor.close(DependencyWaiterApplicationContextExecutor.java:345)(org.springframework.osgi.extender.internal.dependencies.startup)。org.springframework.osgi.extender.internal.dependencies.startup.DependencyWaiterApplicationContextExecutor.stageOne(DependencyWaiterApplicationContextExecutor.java:287)のDependencyWaiterApplicationContextExecutor.fail(DependencyWaiterApplicationContextExecutor.java:401)org.springframework.osgi。 org.springframework.osgi.context.support.AbstractDelegatedExecutionApplicationContext.refresh(AbstractDelegatedExecutionApplicationContext.java:175)at org.springframework.osgi.extender.internal.activatorのDependencyWaiterApplicationContextExecutor.refresh(DependencyWaiterApplicationContextExecutor.java:175) .java:718)at java.lang.Thread.run(Thread.java:637)401)org.springframework.osgi.extender.internal.dependencies.startup.DependencyWaiterApplicationContextExecutor.stageOne(DependencyWaiterApplicationContextExecutor.java:287)at org.springframework.osgi.extender.internal.dependencies.startup.DependencyWaiterApplicationContextExecutor.refresh(DependencyW 175)org.springframework.osgi.context.support.AbstractDelegatedExecutionApplicationContext.refresh(AbstractDelegatedExecutionApplicationContext.java:175)at org.springframework.osgi.extender.internal.activator.ContextLoaderListener $ 2.run(ContextLoaderListener.java:718)atjava。 lang.Thread.run(Thread.java:637)401)org.springframework.osgi.extender.internal.dependencies.startup.DependencyWaiterApplicationContextExecutor.stageOne(DependencyWaiterApplicationContextExecutor.java:287)at org.springframework.osgi.extender.internal.dependencies.startup.DependencyWaiterApplicationContextExecutor.refresh(DependencyW 175)org.springframework.osgi.context.support.AbstractDelegatedExecutionApplicationContext.refresh(AbstractDelegatedExecutionApplicationContext.java:175)at org.springframework.osgi.extender.internal.activator.ContextLoaderListener $ 2.run(ContextLoaderListener.java:718)atjava。 lang.Thread.run(Thread.java:637)287)org.springframework.osgi.extender.internal.dependencies.startup.DependencyWaiterApplicationContextExecutor.refresh(DependencyWaiterApplicationContextExecutor.java:175)at org.springframework.osgi.context.support.AbstractDelegatedExecutionApplicationContext.refresh(AbstractDelegatedExecution .springframework.osgi.extender.internal.activator.ContextLoaderListener $ 2.run(ContextLoaderListener.java:718)at java.lang.Thread.run(Thread.java:637)287)org.springframework.osgi.extender.internal.dependencies.startup.DependencyWaiterApplicationContextExecutor.refresh(DependencyWaiterApplicationContextExecutor.java:175)at org.springframework.osgi.context.support.AbstractDelegatedExecutionApplicationContext.refresh(AbstractDelegatedExecution .springframework.osgi.extender.internal.activator.ContextLoaderListener $ 2.run(ContextLoaderListener.java:718)at java.lang.Thread.run(Thread.java:637)springframework.osgi.extender.internal.activator.ContextLoaderListener $ 2.run(ContextLoaderListener.java:718)at java.lang.Thread.run(Thread.java:637)springframework.osgi.extender.internal.activator.ContextLoaderListener $ 2.run(ContextLoaderListener.java:718)at java.lang.Thread.run(Thread.java:637)

どんな助けでも大歓迎です。

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

java - Spring AOPを使用してBeanではないクラスのアスペクトを作成する方法は?

ProxyFactoryBean私は、Spring AOP (つまり) が使用されているレガシー アプリケーションに取り組んでいます。

特定のクラスのメソッドにアスペクトを追加する必要があります。ただし、このクラスはBeanではありません。AspecjJ ポイントカット式は次のようになります。 execution(* xyz.package.Class.method())

MethodInterceptorとを作成しましたAspectJExpressionPointcutが、これら 2 つを連携させる方法がわかりません。

編集:
このクラスのソース コードはありません。これはサード パーティのライブラリです。このクラスのインスタンスは、ソースコードでも、Bean としてのスプリング構成でも、私が作成したものではありません。ライブラリによって内部的に使用されます。

どんな助けでも感謝します。

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

java - アスペクトの注釈プロパティの読み取り

アスペクトで注釈プロパティ値を読み取る方法は?

@Transactional(readonly=false)で注釈が付けられたすべてのジョイント ポイントに対して、Aroundアドバイスが実行されるようにします。

0 投票する
4 に答える
22538 参照

java - Maven: Java 1.6ソースを含むaspectjプロジェクトをコンパイル

主な質問

私がやりたいことはかなり簡単です。またはそう思うでしょう。ただし、何も正しく機能していません。

要件: Maven を使用し、AspectJ コンパイラを使用して Java 1.6 プロジェクトをコンパイルします。

注: この コードは javac でコンパイルできません。つまり、アスペクトが織り込まれていない場合はコンパイルに失敗します (例外を緩和するアスペクトがあるため)。


2011 年 2月 21 日更新: これには 2 つの同等に実行可能な解決策があります (どちらの場合も、 maven-compiler-pluginと一緒にaspectj-maven-pluginを使用します)。

  1. <failOnError>false</failOnError> コンパイラプラグイン に追加 ( Pascal Thiventに感謝)
  2. <phase>process-sources</phase> spectj コンパイラ プラグインに追加( Andrew Swanに感謝)

これらのソリューションの詳細については、回答セクションを参照してください。解決策 2 の方が優れていると思います。







関連する質問

質問 (以下の試行の失敗に基づく):

  1. compile:compile を実行せずに、maven に直接、aspectj:compile ゴールを実行させるにはどうすればよいですか?
  2. compile:compile の失敗をどのように無視しますか?
  3. 独自の ajc コンパイラを指すカスタムの compilerId をどのように指定しますか?
あらゆる提案に感謝します。これらは、私の問題/質問につながった、私が試したことです:


試行 1 (失敗): maven-compiler-plugin のコンパイラとして、aspectJ を指定します。

これはエラーで失敗します:

org.codehaus.plexus.compiler.CompilerException: The source version was not recognized: 1.6

使用している神経叢コンパイラのバージョン (1.8、1.6、1.3 など) に関係なく、これは機能しません。ソースコードを実際に読んだところ、このコンパイラは Java 1.5 より上のソースコードを好まないことがわかりました。

試行 2 (失敗): compile および test-compile ゴールにアタッチされたspectJ-maven-plugin を使用します。

これは、次のいずれかを実行すると失敗します。

mvn clean test-compile
mvn clean compile

これは、aspectj:compile を実行する前に compile:compile を実行しようとするためです。上記のように、コードは javac でコンパイルされません。アスペクトが必要です。したがって、mvn は compile:compile ゴールを完全にスキップし、aspectj:compile のみを実行する必要があります。

試行 3 (動作しますが受け入れられません):

上記と同じ構成を使用しますが、代わりに次を実行します。

mvn clean aspectj:compile

これは正常にビルドされるという点では機能しますが、コンパイル ゴールとテスト コンパイル ゴールを直接実行できる必要があるという点では受け入れられません (m2eclipse の自動ビルドはこれらのゴールに依存します)。さらに、この方法で実行するには、途中で必要なすべての目標を詳しく説明する必要があります (たとえば、リソースを配布し、テストを実行し、リソースをデプロイする必要があります)。

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

java - 注釈付きパラメーターを使用したポイントカット マッチング メソッド

次の場合、メソッドに一致するポイントカットでアスペクトを作成する必要があります。

  • 公開されている
  • そのクラスには @Controller アノテーションが付けられています (最終的にはありません)
  • そのパラメーターの 1 つ (多数のパラメーターを持つことができます) には、@MyParamAnnotation の注釈が付けられます。

最初の 2 つの条件は簡単だと思いますが、3 つ目の条件を Spring で実現できるかどうかはわかりません。そうでない場合は、次のように変更できます。

  • そのパラメーターの 1 つは、タイプ com.me.MyType のインスタンスです (または何らかのインターフェースを実装します)。

これを達成することは可能だと思いますか? そして、パフォーマンスは良いでしょうか?

ありがとう

EDIT : マッチング方法の一例。ご覧のとおり、MyMethod には注釈が付けられていません (ただし、可能です)。

編集:@Espenの回答に基づいて、私が最終的に使用したソリューション。ご覧のとおり、条件を少し変更しました。クラスは実際には @Controller である必要はありません。

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

java - ant lib ディレクトリに格納されている ant タスクをオーバーライドする方法

私の仕事では、一部の Java プロジェクトで AspectJ を使用しています。これをantビルドで動作させるために、ant/lib/内にaspectjtools.jarを配置しています。

私は現在、特定の Java プロジェクトに取り組んでおり、aspectJ の新しいバージョンを使用する必要があります。プロジェクトを使用するすべての人に、aspectjtools.jar のローカル コピーを更新してもらう必要はありません。代わりに、新しいspectjtools.jarをプロジェクトのlibディレクトリに追加し、次の行をbuild.xmlに追加してみました。

ただし、ANT クラスローダーは、タスク定義クラスパスで指定した jar に優先して ant/lib/ から jar をロードするため、これは期待どおりに機能しません。

代わりに、プロジェクトにチェックインされた jar を選択するように ant に強制する方法はありますか?