Рубрики
Без рубрики

Рассматривая изменения, одновременно с Spring

Не надо артиго, вы должны быть предпринимателем, чтобы внести изменения в реализацию, как это обычно бывает, чтобы собраться вместе, и т. д… Помеченный java, spring, locks.

В этой статье разберемся, как лечить изменения проводились на пользователей, которые аннулируются, и как решить эту проблему с помощью Spring.

O проблема

Основываясь на класс, обратите Внимание, представим себе следующий сценарий:

public class Note {
    private String title;
    private String body;
    // getters & setters...
}
  1. 1 открывает окно и изменяет поле, название
  2. |/| 2 открывает окно и изменяет поля тело
  3. 1 обновление информации заголовок |/| 2
  4. перезаписывает информацию 1 , так что это был последний проводить изменения В реестре находится с | тела изменены

Таким образом, у нас есть проблема создается из-за отсутствия lock.

И какие замки?

Lock-это способ избежать более одного доступа выполняется к определенному ресурсу. Например: в базе данных, если вы создаете update, а забыть дать совершить, будет создан блокировки (lock), для потребителей, чтобы всегда иметь последнюю версию дано.

Este exemplo é o que champs de замок пессимиста (пессимистический замок).

заблокируйте пессимистов

Lock пессимистом, когда вы ‘безопасной’ ресурс (в приведенном примере), так что никто не может использовать во время работы с ней. Это может вызвать проблемы на пользователей, уже что только человек, который ‘взял первый”, может работать с этим ресурсом, а в это время, другой пользователь будет в ожидании, что дает расплывчатую впечатление, что их программное обеспечение работает медленно, или даже уловил 😱 (В некоторых случаях может генерировать до deadlock .

O lock оптимистично

Несмотря на то, что содержать блокировки в названии, в этом случае не существует, то проведение ресурса.

В lock оптимистично, мы делаем проверку в реестре, прежде чем обновить. Этот контроль может быть сделано по дате, по порядку или в других более творческие подходы.

После например lock оптимистично:

  1. 1 открывает экран (версия 1) и изменяет поля title ;
  2. |/| 2 открывает экран (версия 1) и изменяет поля body ;
  3. 1 обновляет информацию с title ; App внутренне обновляет поле версии 2;
  4. |/| 2
  5. попытки передачи информации тело изменен, но с версия 1 ; Lock проводится, и нам удалось обнаружить, что кто-то обновил, чтобы другой версии, ранее 🤗 .

На практике

public class Note {

    private String title;
    private String body;

    // Atributo que fará a verificação se
    // a versão atual é a mais recente
    @Version
    private int version;
}

Класс Обратите внимание на руки, я добавил атрибут типа int в класс, Note, annotation @Version . Таким образом, Spring автоматически выполняет проверок необходимых, и всякий раз, когда запись была обновлена, версия увеличивается.

Завершение

Существуют различные способы лечения, одновременное изменение, Весна в поставке @Version , , простое и практичное, позволяет проводить контроль над версиями данной записи.

И вы , когда-либо искали в вашем framework любимый, как решить этот тип проблемы?

Оригинал: “https://dev.to/kvnallen/tratando-modificacoes-simultaneas-com-spring-3lf5”