Замена com.google.inject на javax.inject
Правда ли, что аннотации javax.inject могут быть прямой заменой аннотациям com.google.inject?
То есть, если я заменю все свои текущие аннотации guice/gin на аннотации из javax.inject, то мое приложение будет компилироваться и работать без проблем?
Во-первых, охватывает ли javax.inject все те возможности, которые предоставляет google.inject?
2 ответ(ов)
Да, это будет работать нормально. На самом деле автор Guice (Боб Ли) является ведущим спецификации javax.inject
.
javax.inject.Inject
не имеет атрибута optional
, поэтому, если вам нужна опциональная зависимость, вам придется использовать аннотацию Guice.
Вопрос о переходе на javax.inject
вызывает много обсуждений, и я сам решил не переходить на него, поскольку нахожу спецификацию слишком минималистичной в сравнении с тем, что предлагает Guice, который я использую. Вот некоторые моменты, которые меня останавливают:
@Optional
, как упоминал @Bozho. Этот аннотационный механизм действительно полезен для удобства работы с опциональными зависимостями.@ImplementedBy
. Это очень удобный инструмент, позволяющий сократить количество явных привязок, что повышает читаемость кода. Также он дает возможность легко переопределять стандартные привязки@ImplementedBy
, если это необходимо (например, для интеграционных тестов).
Скорее всего, есть и другие возможности, но для меня эти два аспекта уже являются критически важными и явными причинами остаться на Guice.
Что такое JavaBean?
Разница между @Inject и @Autowired в Spring Framework: когда и что использовать?
Инициализация ArrayList в одну строчку
Почему нет ConcurrentHashSet, если есть ConcurrentHashMap?
Создание репозитория Spring без сущности