Мне не удалось найти хорошее объяснение/пример при инъекции метода с помощью кинжала 2. Может ли кто-нибудь помочь мне понять?
Пример:
@Inject
public Dinner makeDinner(Pasta pasta, Sauce sauce) {
mPan.add(pasta);
mPan.add(sauce);
return mPan.cookDinner();
}
Итак, если я аннотирую свой метод с помощью @Inject
, могу ли я предположить, что аргументы в сигнатуре метода будут введены с определенными объектами из графа объектов? Как я могу использовать этот метод в моем коде? Он все равно ожидает, что я поставлю все аргументы, когда я вызову метод, какой вид поражения цели.
UPDATE:
Итак, из того, что я понимаю, объект Dinner будет доступен, если я назову DinnerComponent.dinner()
, если мой DinnerComponent настроен следующим образом:
@Component(modules = DinnerModule.class)
public interface DinnerComponent {
Dinner dinner();
}
и мой DinnerModule настроен следующим образом:
@Module
public class DinnerModule {
public DinnerModule() {}
@Provides
Pasta providePasta() { return new Pasta(); }
@Provides
Sauce provideSauce() { return new Sauce(); }
}
Что произойдет, если я хочу, чтобы мой ужин был обжарен? Итак, введем этот метод:
@Inject
public Dinner makeDinner(Pasta pasta, Sauce sauce) {
mPan.add(pasta);
mPan.add(sauce);
return mPan.fryDinner();
}
Как я могу указать в компоненте, который является обедом?