Как заставить Guice работать вместе с ServiceLoader в java - PullRequest
0 голосов
/ 01 февраля 2020

Я новичок в концепции загрузчика сервисов, но мне нужно написать домашнее задание, используя его. Моя задача - написать реализацию SimpleSalaryCalculator

. У меня есть фабрика, которая была предоставлена ​​мне в качестве шаблона. Я могу изменить его, но идея должна остаться прежней, и следует использовать @AutoService

@AutoService(SalaryCalculatorFactory.class)
public final class SimpleSalaryCalculatorFactory implements SalaryCalculatorFactory {

    @Override
    public SalaryCalculator createCalculator(int numberOfEmployees) {
        return new SimpleSalaryCalculator(numberOfEmployees);
    }
}

И у меня есть основной класс, , который мне не разрешено изменять

public final class Launcher {
   public static void main() {
      SalaryCalculatorFactory factory = new SimpleSalaryCalculatorFactory();
      SalaryCalculator calculator = factory.createCalculator(100); 
      System.out.println(calculator.calculate(30));
   }

}

Итак, я написал SimpleSalaryCalculator

public class SimpleSalaryCalculator {

  private MaternityLeaveService maternityLeaveService;
  private TaxCalculatorService taxCalculatorService;

  public SimpleSalaryCalculator(numberOfEmployees) {
      .....
  }

  public double calculate(int forNumberOfDays) {
      ....
  }
}

Дело в том, что в моей реализации я использую некоторые сервисы, которые хочу добавить через конструктор. Если я не могу изменить свой класс Launcher, как я могу заставить guice работать вместе с ServiceLoader?

...