๐ ํผ์ด ๋ฆฌ๋ทฐ ๊ฐ์ด๋
1๏ธโฃ : Commit์ ๊ธฐ๋ฅ ๊ตฌํ๋ง๋ค ํ ๋ฒ์ฉ ๋๋์ด์ ์งํํ๊ธฐ!
2๏ธโฃ : ์ ๋ต ์ฝ๋ ๋์ ์ฐธ๊ณ ์๋ฃ ์ฌ๋ ค์ฃผ๊ธฐ!
3๏ธโฃ : ๋ช ๋ น์กฐ๊ฐ ์๋ ์๊ฒฌ ์ ์ํ์ผ๋ก ๋ฆฌ๋ทฐํ๊ธฐ!
4๏ธโฃ : ์ฝ๋ ์ปจ๋ฒค์ ๊ณ ๋ คํ์ฌ ๋ฆฌ๋ทฐํ๊ธฐ!
5๏ธโฃ : ์์ ์ ์ฝ๋์ ๋น๊ตํ์ฌ ๋ฆฌ๋ทฐํ๊ธฐ!
6๏ธโฃ : ๋๊ตฌ๋ ๋ด๋ ์ดํดํ๊ธฐ ์ฌ์ด ํด๋ฆฐ์ฝ๋ ๋ฆฌ๋ทฐํ๊ธฐ!
๐ ์ค์๋
๐ Mission Record
๋งค ๊ธฐ๋ฅ ๊ตฌํ๋ง๋ค ์ฐธ๊ณ ํ์ ๋ ํผ๋ฐ์ค๋ฅผ ์ฒจ๋ถํด์ฃผ์ ๋ถ๋ถ์ด ์ธ์๊น์๋ค.
๐ป Project Code
1๏ธโฃ BaseEntity ๋ถ๋ถ
โก๏ธ ์์ฑ์ผ๊ณผ ์์ ์ผ๋ง ํฌํจ์์ผฐ๋๋ฐ ์๊ฐํด๋ณด๋ id ๋ BaseEntity ์ ํฌํจ๋ ์ ์๋ค!
โก๏ธ @EntityListeners(AuditingEntityListener.class) => ์์ฑ์ผ๊ณผ ์์ ์ผ์ ์๋์ผ๋ก ์์ฑํด์ฃผ๋ ์ด๋ ธํ ์ด์ (๐์ฐธ๊ณ )
2๏ธโฃ Test ์ฝ๋ ์์ฑ
@Test
void modifyPassword() {
// given
Member foundMember = memberService.findByUsername("testUser");
String rawPassword = "testUser1234!";
String changePassword = "abcdefu1234!";
// (given check)
assertThat(passwordEncoder.matches(rawPassword, foundMember.getPassword())).isTrue();
// when
memberService.changePassword(foundMember, changePassword);
// then
assertThat(passwordEncoder.matches(changePassword, foundMember.getPassword())).isTrue();
}
โก๏ธ ์์ฃผ ์งง์ ์ฃผ์์ด์ง๋ง ๊ฐ๋ ์ฑ์ ํ ๋์ฌ์ฃผ๋ ๊ฒ ๊ฐ์๋ค. ์ ์ ํ ์ฃผ์ ์ฌ์ฉ์ ์์์๋ค.
๐ ๋ํ๋
๐ Mission Record
ํ๋ก์ ํธ ์์ ์ ๊ธฐ๋ณธ ๊ตฌ์ฑ์ ์ถฉ๋ถํ ์๊ฐํ์๊ณ ์งํํ์ ๊ฒ ๋์ ๋ณด์๋ค. ๊ตฌ์ฑ๋๋ก ์งํํ๋ฉด์ ์ค์ค๋ก ๊ณ ์ฐฐํ์ ๋ถ๋ถ๋ค๋ ์ธ์๊น์๋ค.
๐ป Project Code
โ ํด์ํ๊ทธ ๋ฑ ์ฌ๋ฌ๊ฐ์ง ์์์์ stream ์ ์ฌ์ฉํ์ ๋ชจ์ต์ด ๊ฐ๋ ์ฑ์ด ์ข์๋ค.
List<String> keywordContents = Arrays.stream(keywordContentsStr.split("#"))
.map(String::trim)
.filter(s -> s.length() > 0)
.collect(Collectors.toList());
โก Optional ์์ isPresent&get ๊ณผ orElse ์ ์ ์ ํ ์ฌ์ฉ. (๐์ฐธ๊ณ 1) (๐์ฐธ๊ณ 2)
๐ ์์๋
๐ Mission Record
์ฝ๋์ ํจ๊ป ํน์ ์ด๋ ธํ ์ด์ ์ด๋ ๋ก์ง์ ์ฌ์ฉ ์ด์ ๋ฅผ ์ ์ด์ฃผ์ ์ ์ข์์. ๋ค๋ฅธ ๊ธฐ๋ฅ ๊ตฌํ์ ๋ํ ๋ด์ฉ๋ ๋ด๊ฒจ ์์๋ค๋ฉด ๋ ์ข์์ ๋ฏ!
๐ป Project Code
๐ ์์๋
๐ Mission Record
lombok ์ด ๋ฌด์์ ์ข๋ค๊ณ ๋ง ์๊ฐํ๋๋ฐ Setter ์ ๋ํ ๊ณ ์ฐฐ์ด ์ธ์ ๊น์๋ค.
@Setter๋ฅผ ์ฌ์ฉํ์ฌ Entity๋ฅผ ์ง์ ๋ค๋ฃจ๋ ํ์ ๊ธ์ง
โ ๊ฐ์ฒด์ ์ผ๊ด์ฑ์ ๋ณด์ฅํ๊ธฐ ์ด๋ ค์
โก Setter๋ฅผ ์ฌ์ฉ ํ ๊ฒฝ์ฐ ๊ทธ ์๋๋ฅผ ์๊ธฐ ์ด๋ ค์ด ๊ฒฝ์ฐ ์กด์ฌ
๐ป Project Code
โ BindingResult ๋ก 1์ฐจ, Optional ๊ฐ์ฒด ํ์ธ์ ํตํด ๋ก๊ทธ์ธํ ๋ฉค๋ฒ์ธ์ง 2์ฐจ ์ ํจ์ฑ์ ํ์ธํ๋๋ฐ @isauthenticated ๋ก 2์ฐจ ์ ํจ์ฑ์ ํด๊ฒฐ๋๋๊ฒ ์๋์ง ๊ถ๊ธํ๋ค.
๐ ์๊ฐ ์ ๋ฆฌ & ๋จ๊ฒจ์ฃผ์ ๋ฆฌ๋ทฐ ๋ด์ฉ ํผ๋๋ฐฑ
1๏ธโฃ ์๊ฐน ์ ๋ฆฌ
์๋ ๋งํผ ๋ณด์ธ๋ค๊ณ ์์ง ํ์ ๊ด๋ จ ๊ธฐ๋ฅ์ด๋ ๊ธ ๋ถ๋ถ์์๋ ํด์ํ๊ทธ ๊ธฐ๋ฅ์ ๊ตฌํํ์ง ๋ชปํ๋๋ ๋๋ ๊ตฌํํ ์ฝ๋ ์ธ์๋ ์ ๋ป ์์๋ณด๊ณ ๋ฆฌ๋ทฐ ํ๊ธฐ๊ฐ ์ฝ์ง ์์๋ค. ํผ์ด๋ฆฌ๋ทฐ ๊ณผ์ ์์ฒด๋ ํ๋ค์ง๋ง ํ์คํ ๋ค๋ฅธ ์ฌ๋์ ์ฝ๋๋ฅผ ๋ด์ผ ๋ ์ข์ ์ฝ๋๋ฅผ ์์ฑํ ์ ์๋ ๊ฒ ๊ฐ๋ค.
2๏ธโฃ ๋ฆฌ๋ทฐ ํผ๋๋ฐฑ
์ค์๋๊ป์ DTO ์ VO ์ฌ์ฉ์ ๋ํ ํผ๋๋ฐฑ์ ๋จ๊ฒจ์ฃผ์ จ๋ค.
https://maenco.tistory.com/entry/Java-DTO%EC%99%80-VO%EC%9D%98-%EC%B0%A8%EC%9D%B4
[JAVA] DTO์ VO์ ์ฐจ์ด
๋ฐ์ดํฐ๋ฅผ ์ํ ๊ฐ์ฒด๋ฅผ ๋ง๋ค๋ค ๋ณด๋ฉด ํญ์ DTO์ VO๋ฅผ ํผ์ฉํด์ ์ฐ๊ณ ํ๋๋ฐ, ์ด๋ค ๊ฒ์ด ๋ง๋ ๊ฒ์ธ์ง ํญ์ ํท๊ฐ๋ ธ๋ค. ํ๋ฒ ์ ๋ฆฌํด๋ณด๋ฉด์ ์ด ๋์ ์ฐจ์ด๋ ๋ฌด์์ด๊ณ ์ด๋ค ์ํฉ์์ ์ฐ๋ ๊ฒ์ด ๊ฐ์ฅ ์ด
maenco.tistory.com
๊ณผ๊ฑฐ ๋ด ๋ธ๋ก๊ทธ์๋ ์์ฑํ๋ ๋ด์ฉ์ธ๋ฐ ์ ๋๋ก ์ดํดํ์ง ๋ชปํ ์ํ์์ ์ผ๋ ๊ฒ ๊ฐ๋ค..! ๊ธ์ ์ฝ๊ณ ๋ฆฌํฉํ ๋ง ํ ๋ค ๊ธฐ์กด ๊ธ์ ์์ ํด๋ณด์์ผ๊ฒ ๋ค!
'LikeLion_Final_Project ๐ฅ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [2์ฃผ์ฐจ] Mission ํด๊ฒฐ ์ผ์ง (2) (0) | 2022.10.26 |
|---|---|
| [2์ฃผ์ฐจ] Mission ํด๊ฒฐ ์ผ์ง (1) (1) | 2022.10.25 |
| [1์ฃผ์ฐจ] Mission ํด๊ฒฐ ์ผ์ง (0) | 2022.10.19 |
| [0์ฃผ์ฐจ] ํ๋ก์ ํธ ๊ฐ์ (0) | 2022.10.17 |