어플리케이션이 시작될 때 어떤 클래스가 **최초 한번만 메모리를 할당
**하고 그 메모리에 인스턴스를 만들어 사용
하나의 인스턴스를 메모리에 등록해서 여러 쓰레드가 동시에 해당 인스턴스를 공유하여
사용할 수 있기 때문에 요청이 많은 곳에서 사용하면 효율을 높일 수 있음
메모리 낭비를 방지 가능
객체 로딩 시간이 줄어 성능 향상
public class UserExistException extends CustomException {
public static final CustomException EXCEPTION =
new UserExistException(); // static으로만 객체 생성
private UserExistException() { // 딱 1개만 생기는걸 보장하기 위해
// 생성자를 private으로 둔다
super(ErrorCode.USER_EXIST);
} // 이러면 외부에서 new 키워드를 통해 객체 생성 불가능
}
이렇게 호출이 많은 Exception 클래스를 static으로 선언해주어 메모리를 아낄 수 있다