Enum
💬 관련 있는 상수들을 모아놓는 데이터 유형입니다.
✔ 모든 필드는 대문자여야 한다
✔ 모든 필드는 싱글톤 방식의 객체로 만들어진다
✔ 모든 필드가 사용할 수 있는 생성자와 객체를 정의할 수 있다.
✔ Switch문에 사용 가능하다
✔ name, values 등 기본 메서드를 제공한다.
✔ 선언 방식
public enum UserRoleEnum {
USER, ADMIN
}
✔ 생성자, 메서드 포함 선언 방식
public enum UserRoleEnum {
USER("ROLE_USER"), ADMIN("ROLE_ADMIN");
private final String authority;
UserRoleEnum(String authority) {
this.authority = authority;
}
public String getAuthority() {
return this.authority;
}
}
✔ 사용 코드
public void signup(AuthRequestDTO authRequestDTO) {
String userName = authRequestDTO.getUsername();
String password = authRequestDTO.getPassword();
UserRole userRole = UserRole.USER;
validateUser(userName, password);
if(authRequestDTO.isAdmin()){
if(!ADMIN_TOKEN.equals(authRequestDTO.getAdminToken())){
throw new IllegalArgumentException("Admin Token Not Valid");
}
userRole = UserRole.ADMIN;
}
userRepository.save(User.builder()
.username(userName)
.password(passwordEncoder.encode(password))
.userRole(userRole)
.build());
}
생각
enum을 통해 관련 있는 상수를 모아서 사용하면 확실히 사용하고 관리하기 좋은 것 같다. 그동안 enum의 특징은 잘 몰랐는데, 이번 기회를 통해 잘 알고 사용할 수 있을 것 같다.
'개발일지 > TIL' 카테고리의 다른 글
[230712] Filter에서 400 상태코드 내려주기 (0) | 2023.07.12 |
---|---|
[230711] @Transactional(readOnly = true) (0) | 2023.07.11 |
[230709] Builder 패턴과 어노테이션 (0) | 2023.07.09 |
[230708] Json 변환시 Entity 순환 참조 문제 (0) | 2023.07.08 |
[230707] Git add할 때 CRSL 관련 에러 (0) | 2023.07.07 |