Я пытаюсь перенести приложение, написанное с помощью CURAM, в проект Struts2. Мы используем Spring, чтобы воспользоваться возможностями транзакций базы данных. Сделайте так, чтобы код приложения был написан в приложении CURAM, я не могу использовать функцию «Впрыскивание зависимостей» Spring. Мне нужно иметь доступ к Spring ApplicationContext из любой точки моей бизнес-логики. И создавая новый экземпляр ApplicationContext всякий раз, когда мне это нужно, он размалывает все до паузы.Static Singleton Instance of Spring's ApplicationContext
Я нашел этот ресурс в Интернете, который показывает вам, как создать статический одноэлементный экземпляр SpringContext Spring.
Access the Spring-ApplicationContext from everywhere in your Application
Это позволит решить мою проблему, но у меня есть проблемы. Не будет ли статический одноэлементный экземпляр означать, что каждый пользователь, вызывающий действие Struts2, будет получать бизнес-объекты из одного экземпляра ApplicationContext?
По умолчанию весенние бобы являются одноточечными в экземпляре ApplicationContext. Из-за этого я думаю, что статический одноэлементный экземпляр ApplicationContext приведет к тому, что все объекты-пользователи будут использовать один и тот же экземпляр всех бизнес-объектов, что может испортить транзакции и, вероятно, вызвать блокировки повсюду. Правильно ли я предполагаю это?
Что делать, если я объявляю все мои весенние бобы прототипом? Позволит ли я использовать возможности Springs Database Transaction/Concurrency Handling при использовании статического одиночного экземпляра ApplicationContext?
Спасибо.
операции управляются через нить местных жителей. Весна уже выяснила это. Тем не менее, я предлагаю вам выполнить несколько проверок согласованности нескольких потоков, используя, например,jmeter, чтобы все было в порядке, учитывая некоторые из низкоуровневых вещей, которые вы копаете. – Taylor