Я хотел бы спросить: что было бы наиболее подходящей областью для моей загрузки фотогалереи в Grails? Я создал этот PhotoService в своем веб-приложении Grails 2.3.4, все, что он делает, - это получить request.getFile («myfile») и выполнить необходимые шаги для его сохранения на жестком диске всякий раз, когда пользователь хочет загрузить изображение. Чтобы проиллюстрировать, как это выглядит, я даю скелет этих классов.Загрузка фотографий с использованием услуг Grails
PhotoPageController {
def photoService
def upload(){
...
photoService.upload(request.getFile("myfile"))
...
}
}
PhotoService{
static scope="request"
def upload(def myFile){
...
// I do a bunch of task to save the photo
...
}
}
Код выше не является точным кодом, я просто хотел показать поток. Но у меня вопрос:
Вопрос: Я не смог найти точное определение этих различных областей грааля, у них есть пояснение по одному линейке, но я не мог понять, имеет ли область запроса для каждого запроса на контроллер один bean вводится или каждый раз, когда приходит запрос на загрузку действия контроллера?
Мысли: В принципе, поскольку многие пользователи могут загружать одновременно, это не очень хорошо использовать Singleton scope, поэтому мои варианты будут прототипом или запросом, я думаю. Итак, какой из них работает хорошо, а также который создается только при доступе к PhotoService?
Я пытаюсь свести к минимуму количество услуг, вводимых в контекст приложения, и остается до тех пор, пока веб-приложение остается в живых, в основном я хочу, чтобы экземпляр службы умереть или получить сбор мусора в какой-то момент во время веб-приложения а не повесить в памяти, в то время как для этого нет необходимости. Я думал о создании области сеанса, поэтому, когда сеанс пользователя прекращается, служба также очищается, но в некоторых случаях пользователь может не захотеть загружать какую-либо фотографию, и сервис создается без причины.
P.S: Если я перемещаю «def photoService» в upload(), делает ли это его только инъекцию при вызове запроса на загрузку? Я предполагаю, что это может вызвать исключение, потому что будет задержка до тех пор, пока Spring не добавит услугу, а затем ref для def photoService будет n