Создайте класс исключений
public class PessoaException extends RuntimeException {
public PessoaException(String exception) {
super(exception);
}
}
и измените код обслуживания, как показано ниже: -
@PostMapping(value = "/save", produces = {MediaType.APPLICATION_XML_VALUE, MediaType.APPLICATION_JSON_VALUE},
consumes = {MediaType.APPLICATION_XML_VALUE, MediaType.APPLICATION_JSON_VALUE})
public Pessoa save(@RequestBody Pessoa pessoa) {
// email field is unique, might throw constraint violation...
try{
Pessoa p = pessoaRepository.save(pessoa);
}catch(Exception e){
throw new PessoaException("Message" + e);
}
return p;
}
Вы описали идеальный вариант использования для механизма распределенного кэширования, такого как memcached (http://www.danga.com/memcached) или предстоящий Скоростной проект MS (http://code.msdn.microsoft.com/velocity).
В ситуации Вы описываете, где у Вас есть растущее число Сервисных экземпляров Уровня каждое выполнение их собственного локального кэширования, полноценности Ваших уменьшений кэша с каждым новым полем, потому что каждый отдельный экземпляр должен получить те же данные из базы данных для заполнения ее локального кэша, даже если бы к тем же данным просто получил доступ другой Сервисный экземпляр Уровня. С memcached или Скоростью механизм кэширования разумно объединит неиспользованную RAM через все Ваши серверы в единственный кэш для всех Сервисных установок Уровня на доле. Тот путь только первый Сервисный экземпляр Уровня, который получит доступ к части данных, должен будет использовать базу данных, и последующие доступы другими Сервисными экземплярами Уровня вытянут те же данные из кэша.
Имение в распоряжении этого также отвечает на вопрос сеанса пользователя, поскольку Вы могли легко использовать этот тот же кэш для хранения значений состояния для сеансов пользователя, и все Сервисные экземпляры Уровня будут иметь доступ к этой той же информации.
Надеюсь, это поможет!
Adam