タグ付けされた質問 「dynamic-proxy」


2
(インターフェースではなく)抽象クラスのプロキシーを作成するためのjava.lang.reflect.Proxyの代替
ドキュメントによると: [ java.lang.reflect.]Proxyは、動的プロキシクラスとインスタンスを作成するための静的メソッドを提供します。また、これらのメソッドによって作成されるすべての動的プロキシクラスのスーパークラスでもあります。 このnewProxyMethodメソッド(動的プロキシの生成を担当)には、次の署名があります。 public static Object newProxyInstance(ClassLoader loader, Class<?>[] interfaces, InvocationHandler h) throws IllegalArgumentException 残念ながら、これにより、(特定のインターフェイスを実装するのではなく)特定の抽象クラスを拡張する動的プロキシを生成できなくなります。これは、「すべての動的プロキシのスーパークラス」であると考えると理にかなっています。これにより、別のクラスがスーパークラスになるのを防ぐことができます。java.lang.reflect.Proxy したがって、特定の抽象クラスから継承java.lang.reflect.Proxyする動的プロキシを生成し、抽象メソッドへのすべての呼び出しを呼び出しハンドラーにリダイレクトできる代替手段はありますか? たとえば、抽象クラスがあるとしますDog。 public abstract class Dog { public void bark() { System.out.println("Woof!"); } public abstract void fetch(); } 次のことができるクラスはありますか? Dog dog = SomeOtherProxy.newProxyInstance(classLoader, Dog.class, h); dog.fetch(); // Will be handled by the invocation handler …

1
Springのスコーププロキシとは何ですか?
私たちが知っているように春には、(機能を追加するためにプロキシを使用する@Transactionalと、@Scheduledたとえば)。2つのオプションがあります-JDK動的プロキシを使用する(クラスは空でないインターフェースを実装する必要があります)、またはCGLIBコードジェネレーターを使用して子クラスを生成します。proxyModeを使用すると、JDK動的プロキシとCGLIBのどちらかを選択できるといつも思っていました。 しかし、私の想定が間違っていることを示す例を作成することができました。 ケース1: シングルトン: @Service public class MyBeanA { @Autowired private MyBeanB myBeanB; public void foo() { System.out.println(myBeanB.getCounter()); } public MyBeanB getMyBeanB() { return myBeanB; } } プロトタイプ: @Service @Scope(value = "prototype") public class MyBeanB { private static final AtomicLong COUNTER = new AtomicLong(0); private Long index; public MyBeanB() { …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.