次のJavaコードが与えられた場合(私の管理外のサードパーティライブラリから):
package some.third.party.lib;
interface MyInterface { ... }
そして、パッケージプライベートコンストラクターを持つ次のクラス A (これが唯一のコンストラクターです):
package some.third.party.lib;
[...]
class A implements MyInterface {
A() {}
}
ProxyFactoryBean.setTargetName は、すでにインスタンス化された Bean の ID を想定しています。私のSpring Java Configクラスはアプリケーション固有のパッケージに含まれているため(そして、それをsome.third.party.libに変更したくないため)、パッケージプライベートであるため、クラスAをインスタンス化できません。リフレクションを使用して A のコンストラクターの可視性を一時的に変更できることは承知していますが、可能であればこれを避けたいと考えています。
Q : (どのように) Spring Java Config でクラス A のSpring (4.2.1.RELEASE) ProxyFactoryBeanを作成できますか?
Spring XML 構成を使用する場合、この状況は発生しないことに注意してください。これは、Spring (バックグラウンドで) がおそらくリフレクションも使用してクラス A の Bean を作成するためです。