Объект Singleton, созданный для каждого запроса - PullRequest
0 голосов
/ 21 мая 2011

Я хочу создать объект sinlgetom, область действия которого в основном только request.this будет использоваться для сбора ошибок, и нам нужно отправлять ошибки, когда мы отправляем ответ обратно. Могу ли я дать указания на эту вещь? я также использую весну.

Я пытался использовать сессию или запрос области объекта Singleton контейнера Spring, но объект mu хранит значения из предыдущего запроса

Я использую этот объект ошибки с AspectJ..is, который может вызвать проблемы при статической привязке

Ответы [ 4 ]

1 голос
/ 21 мая 2011

Если вы устанавливаете жизненный цикл объекта в контейнере Spring для каждого запроса, тогда он должен существовать только для этого HttpRequest.

Обычно для контейнеров с прямым впрыском, таких как Spring, когда вы устанавливаете жизненный цикл объекта или область действия объектадля каждого запроса он должен создавать новый экземпляр объекта для каждого получаемого http-запроса.

Если он этого не делает, то я предполагаю, что это скорее всего связано с вашей конфигурацией.,

Синглтон - это значение по умолчанию для контейнера пружины при создании bean-компонентов. Я думаю, что вам нужно специально установить область объекта для каждого запроса.

Области действия bean http://static.springsource.org/spring/docs/2.5.x/reference/beans.html

1 голос
/ 21 мая 2011

как насчет

//sync this code
if(request.getAttribute("someKey") == null){
     // create object and set it
}
0 голосов
/ 21 мая 2011

Вы можете использовать ThreadLocal .

0 голосов
/ 21 мая 2011

Я не уверен, что синглтон - это то, что вам нужно - если два запроса поступили одновременно, они разделяют одноэлементный объект, и их ошибки будут перепутаны.

Возможно ли создать объект дляудерживайте ошибки и вставляйте их в объект ThreadLocal.Область действия объекта будет ограничена запросом, и доступ к нему в объекте ThreadLocal легко достигается из вашего приложения без необходимости передавать ссылку на объект вокруг.

...