Замена com.google.inject с помощью javax.inject
Верно ли, что аннотации javax.inject могут функционировать как прямые замены для com.google.inject?
Итак, если я заменил все мои текущие аннотации guice/gin на те, что из javax.inject, мое приложение будет компилироваться и работать просто отлично?
Во-первых, делает ли javax.inject все базы, на которые распространяется google.inject?
Ответы
Ответ 1
Да, все будет хорошо. На самом деле автор guice (Bob Lee) является спецификацией для спецификации javax.inject
.
javax.inject.Inject
не имеет атрибута optional
, поэтому, если вам нужна дополнительная зависимость, вам нужно будет использовать аннотацию guice.
Ответ 2
На самом деле, я решил воздержаться от перехода на javax.inject, потому что я нахожу spec очень минималистичным по сравнению с тем, что предлагает Guice (который я использую):
-
@Optional
как указано @Bozho
-
@ImplementedBy
, что очень полезно, если вы хотите уменьшить количество явных привязок (для ясности кода) и когда вы хотите легко переопределить привязку по умолчанию @ImplementedBy
, если вам нужно (например, для тестов интеграции).
Есть, вероятно, другие, но для меня эти 2 уже являются showstoppers.
Ответ 3
См. Интеграция JSR-330 на сайте Guice.
Ответ 4
Вопрос довольно старый, но...
FYI: вы можете автоматически проверить, что на apiwave.
Изучая прошлые изменения, мы видим, что com.google.inject.Inject
можно заменить на javax.inject.Inject
.