728x90

 

서론

프로젝트 과정에서 Admin(Master, Manager) 생성을 처리하는 로직은 오직 Master 역할만 수행할 수 있습니다.

http.authorizeHttpRequests((authorizeHttpRequests) ->
    authorizeHttpRequests.requestMatchers("/admin/**").hasAnyRole("MANAGER", "MASTER")
);

 

현재 Spring Security 설정에서 /admin/** 경로에 대한 접근 권한을 MANAGER와 MASTER 역할을 가진 사용자에게 허용하고 있습니다.

 

 즉, MANAGER 역할을 가진 사용자도 이 경로에 접근할 수 있지만, 실제로는 Master만이 매니저와 마스터를 생성할 수 있어야 합니다. 따라서 입력 DTO에 대한 검증이 필요합니다.

 

 

String message;
switch (signupRequestDto.getRole()) {
    case MANAGER:
        message = "매니저 생성 완료 :)";
        break;
    case MASTER:
        message = "마스터 생성 완료 :)";
        break;
    default:
        message = "계정 생성 완료 :)";
}

 

기존에는 switch 문을 사용하여 역할에 따라 메시지를 처리했지만 Java 12부터 도입된 switch 표현식을 사용하여 코드를 더 간결하게 작성하기로 결정했습니다.

 

switch 표현식은 결과를 직접 반환할 수 있어 코드의 가독성이 높아지고 유지보수하기 쉬워집니다.

 

 

 

switch 표현식(Java 12+)

Java 12부터 도입된 switch 표현식은 switch 문에 비해 더 간결하고 읽기 쉬운 문법을 제공합니다.

String message = switch (signupRequestDto.getRole()) {
    case MANAGER -> "매니저 생성 완료 :)";
    case MASTER -> "마스터 생성 완료 :)";
    default -> "계정 생성 완료 :)";
};

 

  • 값 반환
    • switch 표현식은 직접적으로 결과를 반환합니다.
    • 이를 통해 변수에 바로 값을 할당할 수 있어 코드가 간결해집니다.
  • break 문 불필요
    • 각 case 블록에 -> 연산자를 사용하여 결과를 지정하며, break 문이 필요 없습니다. 각 case는 독립적으로 결과를 반환합니다.
  • 코드 가독성
    • 간결한 문법 덕분에 코드의 가독성이 향상됩니다. 코드의 흐름이 명확해지며, 복잡한 로직을 작성할 때 더욱 유리합니다.

 

기존 switch case문과의 차이점

 

  • 값 반환
    • 전통적인 switch 문은 값을 반환하지 않지만, switch 표현식직접적으로 값을 반환합니다.
  • 문법
    • switch 표현식은 -> 연산자를 사용하여 case를 정의하며, break 문이 필요 없습니다.
    • 전통적인 switch 문은 case 블록마다 break 문을 사용해야 합니다.
  • 가독성
    • switch 표현식은 코드가 간결하고 직관적이며, 복잡한 로직을 더 쉽게 작성할 수 있습니다.
  • 패턴 매칭
    • Java 14부터는 패턴 매칭 기능이 추가되어 switch 표현식에서 더욱 유연한 데이터 처리가 가능해졌습니다.