Сообщения

Показаны сообщения с ярлыком "@Named"

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. Тем не менее, она предназначена только для создания ваших собственных ...

Spring IoC контейнер: аннотации JSR 330, @Named и @ManagedBean - стандартные эквиваленты аннотации @Component

Изображение
Вместо @Component вы можете использовать @javax.inject.Named или javax.annotation.ManagedBean, как показано в следующем примере: Java import javax.inject.Inject; import javax.inject.Named; // @ManagedBean("movieListener") также может быть использован @Named("movieListener") public class SimpleMovieLister { private MovieFinder movieFinder; @Inject public void setMovieFinder(MovieFinder movieFinder) { this.movieFinder = movieFinder; } // ... } Kotlin import javax.inject.Inject import javax.inject.Named // @ManagedBean("movieListener") также может быть использован @Named("movieListener") class SimpleMovieLister { @Inject lateinit var movieFinder: MovieFinder // ... } Очень часто используется @Component без указания имени для компонента. @Named можно использовать аналогичным образом, как показано в следующем примере: Java import javax.inject.Inject; import javax.inject.Named; @Na...

Spring IoC контейнер: использование стандартных аннотаций JSR 330, внедрение зависимостей с @Inject и @Named

Изображение
Начиная со Spring 3.0, Spring предлагает поддержку стандартных аннотаций JSR-330 (Dependency Injection). Эти аннотации сканируются так же, как аннотации Spring. Чтобы использовать их, вы должны иметь соответствующие jar в вашем classpath. Если вы используете Maven, артефакт javax.inject доступен в стандартном репозитории Maven (https://repo1.maven.org/maven2/javax/inject/javax.inject/1/). Вы можете добавить следующую зависимость в ваш файл pom.xml: <dependency> <groupId>javax.inject</groupId> <artifactId>javax.inject</artifactId> <version>1</version> </dependency> Внедрение зависимостей с @Inject и @Named Вместо @Autowired вы можете использовать @javax.inject.Inject следующим образом: Java import javax.inject.Inject; public class SimpleMovieLister { private MovieFinder movieFinder; @Inject public void setMovieFinder(MovieFinder movieFinder) { this.movieFinder = movieFinder; } publi...