tutorial provides pom nfl google derrius java guice guice-3

java - provides - guice vs spring



¿Cómo usar el AssistedInject de Guice? (1)

Compruebe el javadoc de la clase FactoryModuleBuilder .

AssistedInject permite configurar Factory de forma dinámica para Class en lugar de codificarlo usted mismo. Esto a menudo es útil cuando tienes un objeto que tiene una dependencia que se debe inyectar y algunos parámetros que se deben especificar durante la creación del objeto.

El ejemplo de la documentación es un RealPayment

public class RealPayment implements Payment { @Inject public RealPayment( CreditService creditService, AuthService authService, @Assisted Date startDate, @Assisted Money amount) { ... } }

Ver que CreditService y AuthService deben inyectar por contenedor, pero startDate y amount deben ser especificados por un desarrollador durante la creación de la instancia.

Entonces, en lugar de inyectar un Payment , está inyectando una PaymentFactory con parámetros marcados como @Assisted en RealPayment

public interface PaymentFactory { Payment create(Date startDate, Money amount); }

Y una fábrica debe ser atada

install(new FactoryModuleBuilder() .implement(Payment.class, RealPayment.class) .build(PaymentFactory.class));

La fábrica configurada se puede inyectar en tus clases.

@Inject PaymentFactory paymentFactory;

y usado en tu código

Payment payment = paymentFactory.create(today, price);

He leído https://github.com/google/guice/wiki/AssistedInject , pero no dice cómo pasar los valores de los argumentos de AssistedInject. ¿Cómo se vería la llamada injector.getInstance ()?