์ธํด์ญ ํ๋์์ Spring Boot๋ฅผ ์ด์ฉํด์ ํ๋ก์ ํธ๋ฅผ ๋ง๋ค ๋น์
ํ์ํ ์ด๋ธ
์Id
,Name
,Gender
,Role
์ปฌ๋ผ์ด ์กด์ฌํ์๋ค. ์ฌ์๋ถ๊ป์Gender
์Role
๊ณผ ๊ฐ์ ์ ๋ณํ์ง ์๋ ๊ฐ์Enum
์ ํ์ฉํ๋ฉด ์ข๋ค๊ณ ํ์ ์ ์ฌ์ฉํด๋ณธ ๊ฒฝํ์ด ์๋ค.
Enum์ด๋ ๊ด๋ จ์ด ์๋ ์์
๋ค์ ์งํฉ์ด๋ค. ์์
๋ผ ํ๋ฉด final์ด๋ String๊ณผ ๊ฐ์ ๋ฌธ์์ด์ด๋ ์ซ์์ด์ ๊ณ ์ ํ ๊ฐ์ ์๋ฏธํ๋ค. ์ด๋ค ํด๋์ค๊ฐ ํด๋น ์์
๋ก๋ง ๊ตฌ์ฑ๋์ด์๋ค๋ฉด, ๊ตณ์ด Class๋ก ์์ฑํ์ง์๊ณ Enum
์ผ๋ก ์์ฑํ์ฌ 'ํด๋น ํด๋์ค๋ ์์๋ก๋ง ๊ตฌ์ฑ๋์ด์์ต๋๋ค' ๋ผ๋๊ฒ์ ๋ช
์ํด ์ค ์ ์๋ค.
Enum
์ ์์ฑ์๋ private์ด๋ค. Enum
์ ์์ฑ์๊ฐ ํด๋์ค ๋ก๋๋๋ ์์ ์์ ์์ฑ๋๊ธฐ ๋๋ฌธ์ public์ผ๋ก ์ฌ์ฉํ๋ ๊ฒฝ์ฐ Compile์๋ฌ๊ฐ ๋ฐ์ํ๋ค.
์๋ ์ฝ๋๋ Role์ Enumํด๋์ค์ด๋ค. @Getter
์ด๋
ธํ
์ด์
์ ์ด์ฉํ์ฌ privateํ๊ฒ ์์ฑ์๋ฅผ ๊ตฌ์ฑํ์๋ค. ํด๋น ์์๋ฅผ ๊ตฌํํ ๋๋ map์ ์ฌ์ฉํ๋ ๊ฒ ์ฒ๋ผ ๊ดํธ์ด๊ณ ์ด๋ฆ๊ณผ value๋ฅผ ์จ์ฃผ๋ฉฐ ๋๋ค.
@Getter
@AllArgsConstructor
public enum Role {
ROLE_ADMIN("ROLE_ADMIN", "๊ด๋ฆฌ์"),
ROLE_MEMBER("ROLE_MEMBER", "ํ์");
private final String value;
private final String title;
}
ํ์๊ฐ์
์ ์งํํ ๋ Enum
๊ณผ Thymeleaf
๋ฅผ ์ด์ฉํ์ฌ ๋๋กญ๋ค์ด ํ์์ผ๋ก Gender๋ฅผ ๊ตฌ์ฑํ์๋ค. ๋จผ์ ํด๋น Enum
์ ๊ตฌ์ฑํ์๊ณ Thymeleaf์ T๋ฌธ๋ฒ์ ์ฌ์ฉํ์ฌ Enumํด๋์ค์ Value๊ฐ๋ค์ ๋ถ๋ฌ์ ๊ตฌํํ์๋ค.
์ฒ์์๋ Enum
์์ ๋ฐ๋ก ๋นผ์ค์ง ์๊ณ Dto
์์ ํด๋น Gender๋ฅผ ๊ฐ์ ธ์๋ค. ์ด๋ ๊ฒ ๋ ๊ฒฝ์ฐ Dto
์๋ Male, Female์ฒ๋ผ ์์ด๋ก ๋์ด์์๊ณ JS์์ convert๋ฅผ ํด์ค์ผ ๋๋ค๋ ๋จ์ ์ด ์์๋ค. Enum
์ ์ฌ์ฉํ๊ณ Html์ ๊ตฌํํ ๋ ์ผ์ผํ ์ฑ๋ณ์ ์
๋ ฅ ํ ํ์์์ด ์์ํด๋์ค์ธ Enum
์ ํตํด ๊ณ ์ ๋ ๊ฐ์ ๋ธ๋ฌ์ฌ ์ ์์๋ค.
Enum
@Getter
@AllArgsConstructor
public enum Gender {
Male("Male", "๋จ์"),
Female("Female", "์ฌ์");
private final String value;
private final String title;
}
HTML
<div class="mb-3">
<label class="form-label" for="gen">์ฑ๋ณ</label>
<div class="dropdown" id="gen">
<select onkeyup="checkGender()" class="form-control" id="gender" name="gender">
<option value="">์ฑ๋ณ</option>
<option th:each="genderValue : ${T(com.example.CUSHProject.enums.Gender).values()}"
th:value="${genderValue.value}"
th:text="${genderValue.title}"></option>
</select>
</div>
</div>