programing

Guice의 Assisted 사용방법주사?

goodsources 2022. 9. 12. 11:54
반응형

Guice의 Assisted 사용방법주사?

https://github.com/google/guice/wiki/AssistedInject,을 읽었는데 Assisted 값을 전달하는 방법은 나와 있지 않습니다.인수를 삽입합니다.injector.getInstance() 콜은 어떻게 됩니까?

Factory Module Builder 클래스의 javadoc을 확인합니다.

AssistedInject를 동적으로 설정할 수 있습니다.Factory직접 코딩하는 대신 수업 시간에 사용할 수 있습니다.이 기능은 삽입해야 하는 종속성과 개체 생성 중에 지정해야 하는 일부 매개 변수가 있는 개체가 있을 때 유용합니다.

설명서의 예는 다음과 같습니다.RealPayment

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

저것 좀 봐주세요CreditService그리고.AuthService컨테이너에 의해 주입되어야 하지만 startDate와 금액은 인스턴스 작성 시 개발자가 지정해야 합니다.

그래서 주사하는 대신Payment주사하고 있습니다.PaymentFactory라고 마크된 파라미터를 사용하여@AssistedRealPayment

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

그리고 공장은 묶어야 한다.

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

설정된 팩토리는 클래스에 삽입할 수 있습니다.

@Inject
PaymentFactory paymentFactory;

코드에 사용되었습니다.

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

언급URL : https://stackoverflow.com/questions/8976250/how-to-use-guices-assistedinject

반응형