오프라인 선점 잠금

  1. A 사용자가 수정 페이지에 접근해 저장되어 있는 데이터를 조회 시 오프라인 잠금
  2. B 사용자가 수정 페이지에 접근해 저장되어 있는 데이터를 조회 할 때 익셉션 발생
  3. A 사용자가 수정 폼 전송 후 데이터를 변경하면 오프라인 잠금 해체
  4. 이후 B 사용자가 수정 페이지 접근 가능

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/ab575193-0dea-477f-94ae-2abe54b5f074/Untitled.png


오프라인 선점 잠금을 위한 LockManager 인터페이스와 관련 클래스

@Getter
public class LockId {
	public LockId(String value) {
		this.value = value;	
	}
	private String value;
}

public interface LockManager {
	LockId tryLock(String type, String id) throws LockException;
	void checkLock(LockId lockId) throws LockException;
	void releaseLock(LockId lockId) throws LockException;
	void extendLockExpiration(LockId lockId, long inc) throws LockException;
}