Потребность в бобовых объемах в Spring frameowrk - PullRequest
0 голосов
/ 03 апреля 2020

Я читал, что существует несколько типов областей действия bean-компонентов в среде Spring при их объявлении. Однако я не понимаю, зачем нам несколько типов. Может кто-нибудь объяснить, для чего нужно наличие областей действия Bean в приложении Spring, с некоторыми примерами?

Заранее спасибо!

1 Ответ

1 голос
/ 03 апреля 2020

Spring Inversion of Control Container (контейнер Io c) создает и управляет bean-компонентами в приложении Spring. С каждым объявленным Spring Bean-компонентом мы можем предоставить метаданные, которые определяют, какое количество экземпляров конкретного bean-компонента должно быть создано и как долго они должны жить, то есть время жизни боба.

В основном с простым Java мы сами создаем объект. Позиция, в которой мы создаем объект, определяет его время жизни, например, объект, созданный в методе, уничтожается, как только возвращается метод. Но в случае Spring v создает бин для нас, и для управления жизненным циклом бина Spring использует область действия бина. Это также обеспечивает гибкость для разработчика, чтобы переопределить область по умолчанию, которая является «Singleton».

Теперь, почему нам нужно несколько типов?

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

singleton (по умолчанию) Области применения определения одного компонента к одному экземпляру объекта для контейнера Spring Io C.

prototype Области определения единственного бина для любого количества экземпляров объекта.

запрос Области определения единственного бина для жизненного цикла одного HTTP-запроса; то есть каждый HTTP-запрос имеет свой собственный экземпляр компонента, созданного на основе определения одного компонента. Действителен только в контексте веб-приложения Spring ApplicationContext с поддержкой веб-технологий.

сеанс Обрабатывает определение одного компонента в течение жизненного цикла сеанса HTTP. Действителен только в контексте веб-приложения Spring ApplicationContext с поддержкой веб-интерфейса.

application Области применения определения единственного компонента к жизненному циклу ServletContext. Действителен только в контексте веб-приложения Spring ApplicationContext с поддержкой веб-интерфейса.

websocket Обрабатывает определение одного компонента в течение жизненного цикла WebSocket. Действителен только в контексте веб-приложения Spring ApplicationContext.

Например:

Singleton : для таких объектов, как контроллер, служба, хранилище, требуется только один экземпляр в приложении.

Prototype : такие объекты, как Student, Product, которые могут потребоваться создавать каждый раз, когда вы хотите создать новый ресурс.

Остальные - это области WebAware и говорят сами за себя. .

...