11.2.13.2. インジェクションでのプロキシーの使用
概要
各 bean のライフサイクルが異なる場合に、インジェクションにプロキシーが使用されます。プロキシーは起動時に作成されたbean のサブクラスで、bean クラスのプライベートメソッド以外のメソッドをすべて上書きします。プロキシーは実際の bean インスタンスへ呼び出しを転送します。
この例では、
PaymentProcessor
インスタンスは直接注入されませんShop
。代わりに、プロキシーが注入され、processPayment()
メソッドが呼び出されると、プロキシーは現在のPaymentProcessor
Bean インスタンスを呼び出し、processPayment()
その上でメソッド。
例11.21 プロキシーインジェクション
@ConversationScoped class PaymentProcessor { public void processPayment(int amount) { System.out.println("I'm taking $" + amount); } } @ApplicationScoped public class Shop { @Inject PaymentProcessor paymentProcessor; public void buyStuff() { paymentProcessor.processPayment(100); } }
プロキシーできるクラスのタイプなど、プロキシーの詳細については、以下を参照してください。「Bean プロキシーについて」。