1. Validation 애노테이션 사용 시에 발생하는 ConstraintDeclarationException 에러[ Validation 애노테이션 사용 시에 발생하는 ConstraintDeclarationException 에러 ]에를 들어 다음과 같은 컨트롤러가 존재한다고 하자. 파라미터로 받는 name은 최소 길이가 10이여야 한다는 유효성 검사를 도와주는 @Length 애노테이션이 붙어 있다. 그리고 이를 추싱화한 TestControllerInterface에는 관련 애노테이션 정보가 존재하지 않는 상황이다. 이러한 상황에서 컨트롤러를 호출하게 되면 어떤 결과가 나올까?import org.hibernate.validator.constraints.Length;import org.springframewo..
1. synchronized의 한계를 극복하기 위한 Lock 인터페이스와 ReentrantLock 클래스이전 포스팅에서 설명하였듯, synchronized 키워드를 활용한 동시성 제어는 다음의 2가지 치명적인 문제가 있었다.공정성 문제: 락의 획득 순서가 보장되지 않음무한 대기 문제: 대기하는 스레드를 깨우는 등의 제어를 할 수 없음 이런 문제를 해결하기 위해 자바 1.5부터 java.util.concurrent 라는 동시성 문제 해결을 위한 라이브러리 패키지가 추가되었다. [ 무한 대기 문제를 해결하기 위한 LockSupport 클래스 ]먼저 무한 대기 문제를 해결하기 위해 LockSupport 클래스가 추가되었다. LockSupport는 스레드를 블로킹/언블로킹하기 위한 가장 기본적인 도구로, ..
1. 동시성 제어를 위한 synchronized 키워드의 의미와 한계점[ synchronized 키워드란? ]자바 언어는 설계 초기부터 대량의 요청을 처리할 수 있도록 멀티 스레드를 염두하여 설계되었다. 이를 위해 자바는 1.0부터 손쉽게 동시성을 제어할 수 있는 synchronized 키워드를 제공하였다. synchronized 키워드를 사용하면 임계 영역의 동기화를 쉽게 구현할 수 있다. synchronized 키워드는 메서드 선언부에 붙여 사용하거나 특정 객체를 대상으로 동기화 블록을 만들어 사용할 수도 있다.public class BankAccount { private int balance = 0; // synchronized 메서드 public synchronized void d..