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 표현식은 -> 연산자를 사용하여 case를 정의하며,
- 가독성
- switch 표현식은 코드가 간결하고 직관적이며, 복잡한 로직을 더 쉽게 작성할 수 있습니다.
- 패턴 매칭
- Java 14부터는 패턴 매칭 기능이 추가되어 switch 표현식에서 더욱 유연한 데이터 처리가 가능해졌습니다.
'TIL,일일 회고' 카테고리의 다른 글
[TIL, 일일 회고] 2024.09.03 - Pageable로 페이징 및 정렬 간소화하기 (0) | 2024.09.03 |
---|---|
[TIL, 일일 회고] 2024.09.02 - Redis 활용하여 사용자 인증 정보 캐싱하기 (0) | 2024.09.02 |
[TIL, 일일 회고] 2024.08.31 - @MappedSuperclass 적용하기 (0) | 2024.08.31 |
[Til, 일일 회고] 2024.08.30 - @MappedSuperclass란 무엇일까❓ (0) | 2024.08.30 |
[TIL, 일일 회고] 2024.08.29 - UserDetails와 getAuthorities() 메서드 이해하기 (0) | 2024.08.29 |