Я прочитал о Custom Injection в Guice здесь: https://github.com/google/guice/wiki/CustomInjections
Эта схема описывает, как вы можете создать MembersInjector для внедрения полей класса. Я могу сделать это успешно. Однако мне не нравится идея внедрения поля, и я хотел бы сделать это, чтобы ввести параметры конструктора.
Кто-нибудь знает, как этого можно добиться для внедрения конструктора?
Конкретно:
public class PaymentService {
private final Logger logger;
@Inject public PaymentService(@InjectLogger(type="log4j") final Logger logger){
//the @InjectLogger is the injection point
}
...
}
В документации MembersInjector говорится: «внедрять зависимости в поля и методы типа T»: http://google.github.io/guice/api-docs/latest/javadoc/index.html?com/google/inject/MembersInjector.html
Кажется, это указывает на то, что это должно быть возможно сделать. Любые идеи?
Кроме того, чтобы уточнить, мне нужно использовать пользовательскую инъекцию, потому что у меня нет привязки во время разработки. Мне нужно привязать регистратор во время выполнения на основе атрибута в моей аннотации из конфигурации. Я также не могу перебрать все мои ключи конфигурации.