Какова область действия компонента по умолчанию, если мы используем @Inject с @Component? - PullRequest
0 голосов
/ 12 января 2020

Я знаю, что область действия компонента по умолчанию равна singleton, когда мы используем @Autowired с @Component.

Но что если мы используем JSR-330 @Inject с пружиной @Component (без использования @Scope или @Singleton)?

1 Ответ

1 голос
/ 12 января 2020

Нет никакой разницы между @ Inject или @ Autowired

. Две аннотации работают так же, как Spring решил поддержать некоторые аннотации JSR-299 в дополнение к их собственным

Примечание JSR-299 построен поверх JSR-330

JSR-299 (Java Контексты и инъекции зависимостей), с Гэвином King в качестве лидера использует JSR-330 в качестве основы и значительно улучшает его с помощью модульности, сквозных аспектов (декораторов, перехватчиков), пользовательских областей действия или возможностей безопасного ввода типов. JSR-299 находится поверх слоя JSR-330

Все пружинные бобы , как @Component, по умолчанию являются синглетонами

синглтон-бином сильно отличается от паттерна синглтона, как это определено в оригинальной книге Gang of Four (GoF). GoF Singleton жестко кодирует область объекта, так что один и только один экземпляр определенного класса будет когда-либо создан для ClassLoader. Область применения синглтона Spring лучше всего описывается для каждого контейнера и для одного компонента. Это означает, что если вы определите один bean-компонент для определенного класса в одном контейнере Spring, то контейнер Spring создаст один и только один экземпляр класса, определенный этим определением bean-компонента. Синглтонная область - это область по умолчанию в Spring

...