Spring IoC контейнер: ограничения стандартных аннотаций JSR 330

При работе со стандартными аннотациями вы должны знать, что некоторые важные функции недоступны, как показано в следующей таблице:

Spring
javax.inject.*
javax.inject ограничения/комментарии
@Autowired @Inject @Inject не имеет атрибута 'required'. Вместо этого может использоваться с Optional Java 8.
@Component @Named / @ManagedBean JSR-330 не предоставляет составную модель, только способ идентифицировать именованные компоненты.
@Scope("singleton")
@Singleton Область действия JSR-330 по умолчанию похожа на прототип (prototype) в Spring. Тем не менее, чтобы поддерживать его в соответствии с общими значениями по умолчанию Spring, bean-компонент JSR-330, объявленный в контейнере Spring, по умолчанию является одноэлементным (singleton). Чтобы использовать область, отличную от singleton, вы должны использовать аннотацию Spring @Scope. javax.inject также предоставляет аннотацию @Scope. Тем не менее, она предназначена только для создания ваших собственных аннотаций.
@Qualifier @Qualifier / @Named javax.inject.Qualifier - это просто мета-аннотация для создания пользовательских квалификаторов. Конкретные String квалификаторы (например, @Qualifier со значением в Spring) могут быть связаны через javax.inject.Named.
@Value - нет эквивалента
@Required - нет эквивалента
@Lazy - нет эквивалента
ObjectFactory Provider javax.inject.Provider является прямой альтернативой Spring ObjectFactory, только с более коротким именем метода get(). Его также можно использовать в сочетании с Spring @Autowired или с аннотированными конструкторами и методами установки.

Читайте также:


Комментарии

Популярные сообщения из этого блога

Методы класса Object в Java

Как получить текущий timestamp в Java

Основные опции JVM для повышения производительности и отладки