Guice 3.0 - цель конструкторских привязок? - PullRequest
2 голосов
/ 21 декабря 2011

Я только что прочитал главу о Привязках конструктора в Руководстве пользователя Guice, но не совсем понимаю, когда использовать привязки Конструктора.

Насколько я понимаю, они предоставляютта же функциональность, что и у методов @Provider, за исключением того, что экземпляры, созданные с помощью привязок конструктора, участвуют в AOP.Это правильно?Кто-нибудь может привести лучший пример, чем тот, что в документе?

1 Ответ

4 голосов
/ 21 декабря 2011

Насколько я понимаю, они предоставляют ту же функциональность, что и методы @Provider, за исключением того, что экземпляры, созданные с помощью привязок конструктора, участвуют в AOP.

Это более или менее правильно, хотя и естьнекоторые преимущества, которые имеет привязка конструктора.По сути, это способ привязки к классу, как если бы у него был @Inject в конкретном конструкторе, даже если он этого не делает, и вы не можете добавить аннотацию самостоятельно.В отличие от @Provides методов, вы можете написать утилиты, которые позволят вам делать более интересные вещи.Например, у вас может быть метод utilitiy, который возвращает единственный конструктор класса, который выдает исключение, если их больше одного:

bind(Foo.class).toConstructor(getOnlyConstructor(FooImpl.class));

Вы также можете использовать некоторые другие аннотации (помимо @Inject)если вы по какой-то причине захотели и у вас есть служебный метод, который получает конструктор, помеченный этим для привязки.

...