Мы создали большой страховой полис и систему управления претензиями с использованием Grails и Groovy.Проблемы с производительностью замедляют работу сайта из-за того, что все «READS» извлекаются из базы данных, что не является необходимым, поскольку большая часть данных является статической.Мы хотим ввести простой кэш ключ / значение в слое Grails, но мы не хотим засорять существующий код кодом cache.get () и cache.set (), вместо этого мы хотим использовать аспекты.
Вот пример с нашего основного контроллера ....
InsuranceMainController {
def customer {
//handles all URI mappings for /customer/customerId
}
def policy {
//handles all URI mappings for /policy/policyId,
}
def claim {
//handles all URL mappings for /claim/claimId
}
Что касается кеша, предположим, что на данный момент это простая карта с именем "кеш", которая доступна в глобальном масштабе.объект и объекты в кеше вводятся по запросу URI запроса ...
cache.put("/customer/99876", customerObject)
cache.put("/policy/99-33-ARYT", policyObject)
Возвращаясь к контроллеру, если мы просто засоряем код с помощью cache.get () / set (), вот чтомы хотим избежать использования Spring AOP, в итоге мы получим грязный код.Мы хотим добиться следующей функциональности с помощью apsects или просто с более простой и понятной реализацией ...
InsuranceMainController {
def customer {
Object customer = cache.get(request.getRequestURI())
if ( customer != null)
//render response with customer object
}else
//get the customer from the database, then add to cache
CustomerPersistenceManager customerPM = ...
customer = customerPM.getCustomer(customerId)
cache.put(request.getRequestURI(), customer)
}
}
Нам нужны примеры, которые показывают, как мы можем достичь вышеуказанной функциональности с помощью Spring AOP или чего-то более простого в Grailsизбегая засорения кода с помощью cache.get () / set ().Приветствуются предложения по реорганизации существующего контроллера, если это необходимо для правильной работы AOP.
Заранее спасибо