問題タブ [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.
java - Springでオブジェクトプーリングをどのように管理しますか?
Springでは、すべてのオブジェクトがデフォルトでシングルトンとして扱われることを理解しています。シングルトンがfalseに設定されている場合、リクエストごとに新しいオブジェクトが提供されます。
しかし、オブジェクトをプールしたい場合はどうなりますか?最小1から最大10インスタンスまでの範囲を設定するとしますか?これはSpringを使用して可能ですか?
c# - AOPダーティトラッキング
過去に、エンティティのダーティ チェックを行うためにいくつかの異なる方法を使用してきました。私は、新しいプロジェクトでこれを達成するために AOP を使用するというアイデアを楽しんでいます。これには、プロパティが設定されているときにダーティ フラグ ロジックを呼び出したいクラスのすべてのプロパティに属性を追加する必要があります。属性の各プロパティに余分なコード行を追加する必要がある場合、セッターで SetDirty() メソッドを呼び出すだけの利点は何ですか。私は、AOP アプローチを使用する利点があるとすれば、それが何であるかを尋ねていると思いますか?
java - Spring の @Configurable の AspectJ コンパイル時の織り込みが機能しないのはなぜですか?
更新 5:最新の Eclipse ベースの最新の Spring ToolsSuite IDE をダウンロードしました。プロジェクトを Maven プロジェクトとしてインポートすると、Eclipse/STS はプロジェクトのビルドに Maven ゴールを使用しているように見えます。これは、AspectJ が最終的に Eclipse で正しく動作することを意味します。
更新 4: Eclipse のメカニズムを効果的にバイパスして、コンパイル時のウィービングに Maven + AspectJ プラグインを使用するだけになりました。
更新 3: AspectJ の Eclipse プラグインが、Tomcat に正しく公開する Eclipse の機能を壊しているようです。プロジェクトの AspectJ 機能を削除することによってのみ、プロジェクトを適切に公開できるようになります。とてもうるさい。
更新 2:これが Eclipse で動作するようになりました。これを言うのは非常に不快ですが、EclipseまたはMavenビルドからどのように機能するようになったのかわかりません。実行時の問題ではなく、コンパイルの問題のようです。
更新 1: Maven ビルドを介して動作するようになったようですが、方法がわかりません。Eclipse はまだ動作しません。pom.xmlで変更したのは、これらの (重要でない?) 構成パラメーターを追加したことだけです。
私は実際に、すべてが一貫して機能しないこの問題が繰り返されることを心配しています。詳細がわかり次第、この質問を更新していきます。
Eclipse に関しては、組み込みたいバイナリ アスペクト (この場合はspring-aspects.jar ) をクラスパスからコピーすることで、ある程度の進歩を遂げました。次に、この外部 jar をAspect Pathに追加します。これを行った後、Eclipse はコード内に AspectJ マーカーを適切に表示します。Mavenプラグインを介してMavenによって維持されているJavaビルドパスにspring-aspects.jarをそのままにしておくことができないのは面倒です。ただし、何らかの理由で、バイナリ アスペクトがAspect Pathに明示的に追加されない限り、AspectJ プラグインはバイナリ アスペクトを認識しません。
元の投稿: @Configurable は、Spring の外部でインスタンス化されたオブジェクトに依存関係を注入できるようにする Spring アノテーションです (たとえば、Hibernate またはいくつかの Factory クラスによって)。
以前、この注釈をロード時の織りで使用していましたが、ほとんど機能していました。時々、起動しても何も注入されませんでした。この問題により、この StackOverflow questionが発生しました。多くの回答はありませんでしたが、信頼性が高いため、代わりにコンパイル時のウィービングを試すことを提案する人がほとんどでした。
Eclipse および Maven 用の AspectJ プラグインをインストールしました。これらは両方とも、適切にコンパイルされたクラスのように見えるものを生成します。AspectJ をコンパイルする前に、クラスの 1 つをテキスト エディターで開いたところ、AspectJ への参照が見つかりませんでした。AspectJ のコンパイル後に開いたところ、Eclipse と Maven の両方で生成されたバージョンにorg.aspectj.weaver.MethodDeclarationLineNumberへの参照があります。これが、適切にコンパイルされていると想定する理由です。問題は、デプロイされると、依存関係が注入されないことです。
私のSpring applicationContext.xmlには以下が含まれています:
@Configurable とマークされたクラスが DI を実行するために必要なのは、上記のすべてですか? ロード時ウィービングからコンパイル時ウィービングへの変換中に、META-INF/aop.xml、<context:load-time-weaver />をapplicationContext.xmlから削除し、Spring の Tomcat ウィーバーをcontext.xmlから削除しました。
この問題をさらに調査するにはどうすればよいですか? 考えられる原因は何ですか?
spring - Spring AOP - プロキシされた Bean をキャストするにはどうすればよいですか?
Bean で Spring-AOP を構成しました。
この Bean にアクセスすると、実際の Bean ではなく、Spring プロキシ クラスが返されます。
実際の豆を手に入れる方法はありますか?
applicationContext.xml
some.java
これはスローします:
java.lang.ClassCastException: $Proxy19
c# - Postsharp - 呼び出しアセンブリを取得しますか?
Postsharp OnMethodBoundaryAspect を使用する場合、特定のメソッドへの呼び出しを開始した呼び出しアセンブリを取得する方法はありますか? GetCallingAssembly は、呼び出されているメソッドが含まれているアセンブリを返すだけです。
注 - postsharp フォーラムで問題が発生しています。そうでなければ、そこに投稿したはずです。
c# - オブジェクト マッパーの PostSharp
エンティティから DTO および DTO からエンティティへのマッパーに PostSharp を使用することを検討しています。約 100 のエンティティに対してそのタスクを手動で行うことは、メンテナンスの悪夢です。Codeplex で AutoMapper を見てきましたが、私の場合、オーバーヘッドが深刻な問題になる可能性があると思います。さらに、PostSharp を使用すると、マッピング規則をさらに制御できると思います。誰かがこの問題の王様との経験を共有できれば、それは素晴らしいことです.
私が考えている方向は次のようなものです(これが不可能な場合は誰かに教えてください):
私がクラスに固執することを計画している側面は、次の2つのメソッドをコンテンツで埋めます:
最初のメソッドは DTO に基づいてエンティティを返し、2 番目のメソッドは反対のことを行います。アスペクト内では、各プロパティをループして、新しいターゲットを作成し、プロパティの値をターゲット オブジェクトの対応するオブジェクトに割り当てます。実行時のオーバーヘッドなしでコンパイル時にこれを行うことは可能ですか?
c# - オブジェクトが使用されるたびに設定の値をチェックする負担を取り除く
オプションに基づくアプリケーションを想像してみてください。
すべての文字列の末尾に感嘆符を追加したい (それ自体は非常に簡単な作業です)。ただし、web.config または XML ファイルにオプションがあるため、オプションが true の場合は感嘆符が追加され、そうでない場合は追加されません。
web.config または xml ファイルで設定の値を確認する方法は知っていますが、これを行う最善の方法は何ですか? 文字列の場合、どのプログラムでも頻繁に使用されます。
私は書くことができます:
ただし、これは大規模な (または小規模な) コードベースでは実用的ではありません。この手動チェックを取り除く方法はありますか? AOP または属性がこれを解決できる可能性があると聞いたことがありますが、例を見たことがありません。
この問題を解決できる方法は何ですか?
delphi - 関数の Result にアクセスして設定する Delphi Prism Cirrus
バックグラウンド
この質問は、Delphi Prism のアスペクト指向プログラミング用の新しいCirrusインフラストラクチャに関連しています。
現在、クラスに自動注入している側面があり、Method.SetBody関数を使用してターゲット コードを変更しようとしています。これまでのところ、 Cirrus Introductionドキュメント wikiにある Logging のサンプル コードをベースとして使用して、コードを構成しました。
質問
元の関数本体が実行されている場合と実行されていない場合の両方で、注入される関数の Result にアクセスするにはどうすればよいですか?
1 つのコード パスで OriginalBody への呼び出しをバイパスする関数の結果を設定し、もう 1 つのコード パスとして OriginalBody を呼び出し、アスペクト コードで OriginalBody の後続の結果を使用できるようにしたいと考えています。私は当初、これがAspects.RequireResultメソッドの意図された目的である可能性があると考えていましたが、これは私の場合、OriginalBody の実行を強制するように見え、コードの重複を引き起こします。
java - アスペクト指向プログラミングの未来
私は AOP 分野の初心者です。初めて AOP の概念を適用して何かをコーディングしたとき、アスペクトがアプリケーションのクロス カット パターンをどのように排除するかを理解できて感激しました。セキュリティ、ロギング、トランザクション、監査などの分野横断的なパターンを AOP を適用して解決するという考えに圧倒されました。
しかし、私が仕事をしているクライアントに AOP の使用を最初に提案したとき、彼らはそれをサポートしていないと言われました。AOP はより多くのメンテナンスを意味すると言われました。コードが変更された場合、ポイントカットを変更する必要があります。したがって、アスペクトが適用されたコードを変更するたびに、アスペクトを分析、変更、およびテストする必要があるでしょうか?
これについて何を言わなければなりませんか?主流の企業が AOP の広範な使用にまだオープンではないのはなぜですか? AOP の世界はどこへ向かうのか?