問題タブ [cglib]
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でJDK Proxiedクラスを注入する方法は?
私にはかなり奇妙な状況があります。私はSpring 3.0.6を実装してインターフェースするBeanで使用しています。これまでのところ、かなり普通のことです。私の Bean には、いくつかの保護されたメソッドもあります。私はいくつかの AOP (JDK プロキシ) を使用していますが、すべて正常に動作します。
この Bean を別のパッケージ クラスに注入したいときに問題が発生します。通常の状況では、実装を挿入して、保護されたメソッドにアクセスできます。残念ながら、これは JDK プロキシであるため、インターフェイスに基づいて注入することしかできません。
保護されたメソッドにアクセスする必要があるため、インターフェイスでメソッドを宣言できないため、キャッチ 22 の状況に陥っています。私は CGLIB プロキシに切り替えようとしましたが、ファイナル メソッドなどで Bean をアドバイスする他のアドバイザーでクラッシュするため、実際には解決策ではありません。
私に何ができるかについて何か提案はありますか?@PostConstruct メソッドを使用してアプリケーション コンテキストから Bean を取得しようとしましたが、(当然のことながら) Proxied Bean しか取得できず、必要な実装にキャストできません。
任意の提案をいただければ幸いです。
ありがとう!
エリック
java - Spring Framework は JBoss で cglib を認識しません
私のアプリケーションは、JBoss 5.1.0.GA で Spring Framework 3.0.5 を使用しています。フレームワークはサーバーによって提供されます。つまり、フレームワーク ライブラリはserver/<servername>/libディレクトリに配置されます。サーバーはサードパーティによって管理されているため、このサーバーが提供する環境にライブラリを追加することはできません。私のアプリケーションでは cglib を使用する必要があります。Spring はこれをプロキシの目的で使用します。cglib はserver/<servername>/libに含まれていないため、mavencglib-2.2.2.jarを使用してアプリに含めました。.war
問題は、デプロイ時に次のエラーが発生することです。
CGLIB2 が使用できないため、ターゲット クラスをプロキシできません。CGLIB をクラス パスに追加するか、プロキシ インターフェイスを指定します。
アプリ.warで cglib を確認したところ、WEB-INF/libディレクトリに見つかりました。私の知る限り、このディレクトリにあるjar内のすべてのクラスはクラスパスにあり、server/<servername>/lib. Spring が cglib を見つけられないのはなぜですか?
java - JDK動的プロキシとCGLibの違いは何ですか?
Proxy Design Patternの場合、JDK の Dynamic ProxyとCGLibなどのサードパーティの動的コード生成 API の違いは何ですか?
両方のアプローチを使用することの違いは何ですか?
proxy - cglibは、プロキシを実装するためのバイトコードまたは物理クラスをメモリに作成しますか?
CGLIBは、プロキシメカニズムを実現するために使用される非常に人気のある実装です。特定のクラスをプロキシするために、CGLIBはそのサブクラスのメモリ内実装を作成するのか、それとも物理バイトコードを作成してからそのクラスをインスタンス化するのかを知りたいのですが。
それがメモリ実装で作成する場合、それがそうしている間にどれだけのオーバーヘッドをもたらすか。CGLIBのドキュメントでこの詳細を見つけようとしましたが、指定されていないか、スキップした可能性があります。
javaassistライブラリについても同じ質問をすることができます。
spring - スーパークラスには null コンストラクターがありませんが、引数が指定されていません。春の統合
Spring Integration でサポートされている Web アプリケーションを開発しています。1.0.4.RELEASE を使用しています。私はCGLibプロキシを使用しています。トランザクション メッセージ エンドポイントがあります。すべてが正しく機能しましたが、注釈を少し試してみました。私は正常に動作するannotation-configを使用しています。service-activator 構成を xml から注釈に切り替えることから始めましたが、失敗しました。
次の構成は正しく機能しました。
spring-integration.xml
MyService.java
注釈を使用してまったく同じ機能を実現しようとしています (私は CGLIB を使用しているため、インターフェイスは必要ありませんが、デフォルトのコンストラクターは必要ありません)。
- .xml から service-activator を削除しました
- 変更された MyService:
MyService.java を変更しました
次のエラーが発生します: java.lang.IllegalArgumentException: スーパークラスには null コンストラクターがありませんが、引数が指定されていません
次のエラー記事について説明しているスレッドを多数見てきましたが、問題はカスタム クラスに関するものでした。私の問題はSpringクラスに関するものです。
どうしたの?Spring が MyService だけでなく、Spring クラスのプロキシを作成しようとするのはなぜですか? 私のクラスは何らかの方法でラップされていますか? 何が起こっているのかわかりません。大変助かります。
hibernate - asm と hibernate と cglib との互換性の問題...?
私はglassfishサーバーログを取得しています:,
私はネットビーンズを使用しています。この3日間、イライラしています。
このエラーを削除する方法を教えてください..?
proxy - スプリング付きの CGLIB が IllegalAccessError をスローする
ロギングに cglib プロキシを使用して aop を有効にした Spring アプリがあります。
Spring 3.1.1 で cglib-nodep-2.2.2.jar を使用しています。これは、Tomcat または Jetty でうまく機能します。ただし、これを OC4J (jdk1.6 を使用) にデプロイすると、次のエラーが発生します: クラスはプロキシしようとしています - ComponentRegistryImpl はパッケージ プライベートです
java - Java クラスへのフィールドの追加
CGLib、ASM、BCEL (アスペクト)、および Javassist を使用して、実行時にクラスにフィールドを追加することを検討しました....
頭を整理すると、これらのバイトコード操作者は実際のクラスを更新せず、ユーザーが変更をダンプすることしかできないようです (CGLib や writeFile メソッドの場合と同様)。(a)(BCELでInputStreamを実行するのではなく)クラスをロードし、(b)クラスを更新するソリューションを見つけることを望んでいました。
多分これは正常ですか?人々は通常、プロキシを作成し、プロキシを渡しますか?
私がやりたいことは、特定の注釈を持つフィールド (プロパティではない) を探すフレームワークにオブジェクトを渡す前に、フィールド (注: get/set メソッドによるプロパティではない) を追加することです。したがって、「クライアント」は、追加のフィールドを挿入したいターゲット クラスを作成しています。これらのオブジェクトを操作したいサービス層への AOP 呼び出しをインターセプトします。