問題タブ [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.

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

java - メソッドを1回だけ呼び出せるようにマークするJavaアノテーションとプロセッサ?

メソッドが複数回呼び出された場合に RuntimeException をスローするようにメソッドをマークできるようにする必要があります。

私はいくつかの単一の代入セマンティクスを強制しようとしていますが、クラスへのパラメーターの数が多すぎて単一のコンストラクターに入れることができず、これらのクラスJAXBも認識できるようにする必要があるため、オブジェクトは変更可能である必要がありますが、単一の割り当てセマンティクスを強制します。

Aspects でこれを実行できると確信していますが、代わりに独自の Annotations プロセッサを使用できるようにしたいと考えています。

Python の Decorators でこれを行う方法を知っています。

コンパイル時だけでなく、実行時にアノテーション付きメソッドへの呼び出しをインターセプトできるアノテーション プロセッサを作成するにはどうすればよいですか?

メソッド呼び出しをインターセプトする動的プロキシを使用して、何かに取り組んでいると思います。それらを Annotation プロセッサと統合する方法を理解する必要があるだけです。

動的プロキシでは、インターフェイスを使用する必要があります。これは面倒です。依存関係を追加することを犠牲にして、 CGLib MethodInterceptorが動作しています。

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

java - インスタンス/具象クラスのメソッドランタイムをオーバーライドする方法は?(例:リフレクション、cglib)

私がやりたいのは、

  • クラスX(argで渡されるクラス変数)のインスタンスを生成し、
  • そのメソッドの一部をオーバーライドします

より具体的には、オーバーライドする親クラスXIには次のものが含まれます

  • デフォルトのコンストラクターは含まれていません(たとえば、argsを持つすべてのコンストラクター)
  • 同じクラス内で非プライベートメソッドを呼び出すコンストラクター

もともと、リフレクションなどを使うのはとても簡単だと思っていましたが、要件の実装には限界があることに気づきました。

Mockitoはあらゆる種類のメソッドインジェクションランタイムを実行できるため、これは達成可能だと思います。
誰かアドバイスをお願いします、ありがとう。
私がイメージする擬似コードは次のようなものです。

  • 元の問題のシナリオ

X1.get()、X2.get()、X3.get()を呼び出すいくつかのメソッドを持つクラスをテストすることを目的としていました。
テストケースによっては、Xn.get()を作成して制御できるものを返す必要があります。テスト(例:null)
以下の制約のため:

  • ただし、JMock 1.0に対するモックツールの制限により(コントロールがない:()、Xn.get()をモックして「someSpecifiedObjects」を返すことはできません。
  • Xnにはnullコンストラクターと非プライベートメンバーを呼び出すコンストラクターはありません

私の回避策は、自作のXnクラスであり、それらをテストケースに渡して、Cn.get()を期待される
コード例にします。

そして、この種のことはテストケース全体に広がっています。
したがって、重複コードを減らすために、テスト用に指定されたオーバーライドされたメソッドを使用してXnインスタンスを生成するメソッドを構築したいと思います。例えば

次に、この投稿の問題が発生します

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

java - 注釈プロセッサからの CGLib プロキシの適用

コンパイル時にカスタム アノテーションを処理する Annotation Processor が動作しています。CGLIB プロキシを適用してMethodInterceptor、 を使用していくつかのメソッドにロジックを適用したいと考えています。Annotation Processor から CGLIB コードを適用する方法がわかりません。

私がやりたいことは、カスタム注釈でクラスに注釈を付けて、Enhancer作業中のコードを自動的に追加して、自分でコードを手動で適用する必要がないようにすることEnhancerです。

これは、コンパイル時の注釈処理の完璧な使用例のようです。

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

spring - Spring AOP - プロキシ生成エラー

トランザクションの処理時間をキャプチャするために、Spring AOP のアドバイスを使用しています。アプリケーションの起動中に次のエラーが発生します

このスレッドの助けを借りて、問題が何であるかを特定しました。しかし、coreMessageResourceAccesor Bean を変更してセッター ベースのインジェクションを使用することはできません。これは、Spring クラスを使用しており、そのクラスには arg コンストラクターがないためです。

以下は、Beanの構成です

誰かが助けてくれれば本当にありがたいです。御時間ありがとうございます。

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

java - Spring: @Resource を使用した具象クラスの注入には CGLIB が必要ですか

spring-instrument.jar を使用して AspectJ LTW で Spring 3.0.6 を構成しました。

依存関係から CGLIB を削除すると、MyBean が作成された (およびその @PostConstruct が実行された) 後でも、次の例外が発生します。

ロードタイムウィーバーが存在する場合でも、CGLIB を使用する必要があるということですか?

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

java - Dalvik 用の ASM または CGLIB アナログ

Dalvik バイトコードに使用できる CGLIB アナログを探しています。Androidの世界にそのようなライブラリはありますか?

おそらく、CGLIB の結果をその場で Davlik バイトコードに変換する方法はありますか?

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

java - Spring、CGLIB: ジェネリック クラスをプロキシできないのはなぜですか?

例外の根本原因についてお聞きしたいです。

proxy-target-class="true"これは、Spring にクラスのプロキシを生成させる (つまり、トランザクション マネージャーで設定する) ときに Spring で発生します。

プロキシするクラスがパラメータ化されたクラスの場合、つまり

たとえば、この質問で完全なストーリーを読むことができます: Abstract DAO pattern and Spring's "Proxy cannot be cast to ..." problem!

質問: Spring がこのクラスをプロキシできないのはなぜですか? 古いコード生成ライブラリを使用しているからでしょうか? 型消去のため?SomeDAOImplがジェネリック クラスでない場合は、成功します (確認しました)。

「クラスではなくインターフェイスをプロキシする必要があります」のように答えないでください。そんなこと知ってる。

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

java - Hibernateクラスが見つかりません

私は休止状態に慣れておらず、サンプルの休止状態検索プロジェクトを作成しようとしています...プロジェクトを実行しようとすると、次の例外が発生します。

私はそれをグーグルで検索し、答えはasmおよびcglibライブラリを含めることでした。私はそうしましたが、それでも同じ例外が発生します。私は何をすべきか?プロジェクトの実行にEclipseを使用しています。

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

java - Java でオブジェクトの作成をインターセプトする方法

少し奇妙な要件があります。

特定のインターフェイスを実装するすべてのオブジェクトを装飾するために作成したカスタム プロキシを使用したいのですが、コード自体に対して透過的である必要があります。ビルド プロセスに含めることができれば完璧です。

私は AOP で考えていましたが、そのような機能は見当たりませんでした。私はアイデアを探しています。コンパイル後にソースコードを変更し、少なくとも new への直接呼び出しを置き換えて再コンパイルすることを考えています (これはリフレクションによってオブジェクトを作成しないと思いますが、良いスタートになるでしょう)。これにより、そのような計測器を可能な限り透過的にするという私の主な目的が損なわれる可能性があります。

そんな珍しいことを経験した人はいますか?

よろしく

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

java - CGLIBを介してプロキシする場合、メソッドアノテーションはnullになります

CGLIBを介してプロキシされたクラスに属するメソッドのアノテーションをリフレクションで検索すると、奇妙な動作が発生します。SpringではCGLIBを使用しており、アノテーションのみでメソッドにアノテーションを付けるとうまく機能します(getAnnotations()対応するオブジェクトのメソッドを介してアノテーションを取得できMethodます)。代わりに(アノテーションの順序に関係なく)2つのアノテーションを使用してメソッドにアノテーションを付ける場合は、getAnnotations()を返しnullます。両方の注釈にはがありRetentionPolicy.RUNTIMEます。

CGLIBにはいくつかの問題があると読みましたが、1つの注釈に対してのみ機能し、2つの注釈を付けるとnullを返すのは奇妙です。

助言がありますか?

(Spring3.0.5およびCGLIB2.2.2を使用)

コードの追加:

最初の注釈は次のとおりです。

2番目の注釈は

そして、コードのブロックは注釈をチェックするためのものです

@Producesと@JamonMonitoredの両方でメソッドにアノテーションを付けると、getAnnotation(Produces.class)は常にnullです。