7.15. インジェクションでのプロキシーの使用
各 bean のライフサイクルが異なる場合に、インジェクションにプロキシーが使用されます。プロキシーは起動時に作成された bean のサブクラスで、bean クラスのプライベートメソッド以外のメソッドをすべて上書きします。プロキシーは実際の bean インスタンスへ呼び出しを転送します。
この例では、PaymentProcessor
インスタンスは直接 Shop
へインジェクトされません。その代わりにプロキシーがインジェクトされ、processPayment()
メソッドが呼び出されるとプロキシーが現在の PaymentProcessor
Bean インスタンスをルックアップし、processPayment()
メソッドを呼び出します。
例: プロキシーインジェクション
@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); } }