더북(TheBook)

이 빈의 비즈니스 메서드는 두 가지 방법으로 접근을 통제합니다. @Lock(LockType.WRITE)는 메서드 실행 도중엔 다른 클라이언트가 빈에 접근하지 못하게 잠급니다. @Lock(LockType.READ)은 메서드 동시 접근을 허용하고 다른 클라이언트의 빈 접근을 허용합니다. 보통 데이터를 수정하는 메서드는 WRITE를 붙여 데이터 수정 중에 접근을 차단합니다. addUser()는 타입이 WRITE인 메서드라서 getName()을 호출한 클라이언트는 addUser()가 할 일을 마친 후에야 자신도 마칠 수 있습니다. addUser()가 주어진 타임아웃 시간 내에 처리를 끝내지 못하면 컨테이너가 ConcurrentAccessTimeoutException 예외를 던집니다. 타임아웃 시간 역시 애너테이션으로 설정할 수 있습니다(코드 4-12).

LockType을 클래스에 붙이면 별도로 LockType을 밝히지 않은 모든 비즈니스 메서드에 적용됩니다. LockType은 기본이 WRITE라서 동시 접근이 필요한 메서드만 따로 설정해도 충분합니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.