Spring Запрос и область прототипа?
Ниже приведены определения прототипа и области запроса в spring.
прототип
Обладает единственным определением bean для любого количества экземпляров объектов.
запрос
Обладает единственным определением bean для жизненного цикла одного HTTP-запроса; то есть каждый HTTP-запрос будет иметь свои собственные
экземпляр bean, созданный с обратной стороны одного определения bean. Действителен только в контексте веб-приложения Spring ApplicationContext.
В соответствии с моим пониманием. В случае области прототипа некоторый пул будет поддерживаться контейнером ядра. Он будет обслуживать экземпляр bean из этого пула.
В случае области запроса новый bean будет обслуживаться для каждого HTTP-запроса. Пожалуйста, исправьте меня, если в понимании есть какая-то неловкость?
Если вышеприведенные утверждения верны, то если bean содержит некоторое состояние, то область не должна определяться как прототип, а должна быть определена
как запрос. Правильно?
Ответы
Ответ 1
Вы отключены. Прототип описан в документах здесь как
"Неэлементный, прототипный объем bean результаты развертывания в создание нового экземпляра bean каждый время запроса для этого конкретного bean.
Ваше описание области запроса beans является точным.
Вероятно, только что получили проводы, пересекающиеся с прототипом vs singleton.
Ответ 2
Лучший, который я нашел в сети
Прототип создает новый экземпляр каждый раз, когда вы вызываете getBean в ApplicationContext. Если для запроса создается только один экземпляр для HttpRequest. Таким образом, в одном HttpRequest я могу дважды вызвать getBean в приложении, и будет только один экземпляр bean, тогда как тот же самый bean, охваченный Prototype в том же единственном HttpRequest, получит два разных экземпляра.
Область HttpRequest
Mark mark1 = context.getBean("mark");
Mark mark2 = context.getBean("mark");
mark1 == mark2; //This will return true
Область прототипа
Mark mark1 = context.getBean("mark");
Mark mark2 = context.getBean("mark");
mark1 == mark2; //This will return false
Надеюсь, что это очистит тебя.