7.15. 在注入中使用代理
当 bean 的生命周期相互不同时,代理用于注入。代理是运行时创建的 Bean 的子类,并覆盖 bean 类的所有非私有方法。代理将调用转发到实际 bean 实例。
在本例中,Pay mentProcessor 实例没有直接注入到 Shop。相反,代理会被注入,调用 processPayment() 方法时,代理会查找当前的 PaymentProcessor be an 实例,并对其调用 processPayment() 方法。
示例:Proxy Injection
@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);
}
}