๋ฉ์์ง ์ํฉ์ ํ๋ ๊ฐ์ ํด์, ๊ฒ์ํ ์๋น์ค๋ฅผ ๋ง๋ค์๋ค๊ณ ์๊ฐํ์. ๋ชจ๋ ๊ฒ์ํ์์ ๊ฒ์ํ์ ๋ฌ๋ฆฐ ๊ธ์ "๋๊ธ"์ด๋ผ๊ณ ํ์ํ๋ค๊ณ ์๊ฐํด๋ณด์. ๊ทธ ์ํฉ์์ ๋๊ธ์ "๋ต๊ธ"๋ก ๊ณ ์น๋ผ๋ ๋ช
๋ น์ด ๋จ์ด์ก๋ค๊ณ ์๊ฐํด๋ณด์. ์ฐ๋ฆฌ๋ ๋ชจ๋ ํ์ด์ง์ ๋๊ธ์ ์ฐพ์ ๋ต๊ธ๋ก ๊ณ ์ณ์ผ ํ ๊ฒ์ด๋ค. ํ๋ฉด์ด ๋ง์ผ๋ฉด ๋ง์์๋ก ํด๋น ์์
์ ํ๋ค๊ณ , ๋๋ฝํ ๊ฐ๋ฅ์ฑ๋ ์กด์ฌํ ๊ฒ์ด๋ค. ์ด๋ฐ ๋ค์ํ ๋ฉ์์ง๋ฅผ ํ ๊ณณ์์ ๊ด๋ฆฌํ๋๋ก ํ๋ ๊ธฐ๋ฅ์ ๋ฉ์์ง ๊ธฐ๋ฅ์ด๋ผ ํ๋ค. ์๋ฅผ ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ๋ค. 'messages.properties'๋ผ๋ ๋ฉ์์ง ๊ด๋ฆฌ์ฉ ํ์ผ์ ๋ง๋ค๊ณ comment=๋ต๊ธ comment.writer=์์ฑ์ ... ์์๊ฐ์ด ์์ฑํ ํ, ๊ฐ HTML(ํ์๋ฆฌํ)๋ค์ ๋ค์๊ณผ ๊ฐ์ด ํด๋น ๋ฐ์ดํฐ๋ฅผ key๊ฐ์ผ๋ก ๋ถ๋ฌ์ ์ฌ์ฉํ๋ ๊ฒ์ด๋ค. (์ด๋ ๋ทฐ ํ
ํ..
์ด๋ฒ์๋ ํ์ ์๋น์ค์์ ๋ฐ์ํ ์ ์๋ ์์ธ๋ค์ MemberException์ผ๋ก ๋ชจ์, ๊ณตํต์ผ๋ก ์์ธ์ฒ๋ฆฌ๋ฅผ ํด์ฃผ๋๋ก ํ๊ฒ ์ต๋๋ค. ์์ธ์ฒ๋ฆฌ๋ @ControllerAdvice๋ฅผ ํตํด, ํ๊ณณ์์ ์์ธ๋ฅผ ๊ด๋ฆฌํด์ฃผ๋๋ก ํ๊ฒ ์ต๋๋ค. ์ํ๋ฆฌํฐ๋ฅผ ์ด์ฉํ JSON ๋ฐ์ดํฐ๋ก ๋ก๊ทธ์ธ (์๋ฃ) JWT๋ฅผ ์ด์ฉํ ์ธ์ฆ (์๋ฃ) ๋๋ฉ์ธ, ํ
์ด๋ธ ์ค๊ณ, ์ํฐํฐ ์์ฑ (์๋ฃ) ๋๊ธ ์ญ์ ๋ก์ง ๊ตฌํ (์๋ฃ) ํ์๊ฐ์
+ ์ ๋ณด์์ ๋ฑ ํ์ ์๋น์ค ๊ตฌํ (์๋ฃ) ๊ฒ์ํ ์๋น์ค ๊ตฌํ ๋๊ธ ์๋น์ค ๊ตฌํ (1๋๊ธ -> *(๋ฌดํ) ๋๋๊ธ ๊ตฌ์กฐ) ์์ธ ์ฒ๋ฆฌ (์งํ ์ค) ์์ธ ๋ฉ์ธ์ง ๊ตญ์ ํ ์นดํ
๊ณ ๋ฆฌ๋ณ ๊ฒ์ํ ๋ถ๋ฅ ๊ฒ์๊ธ ํ์ด์ง ๋์ ์ธ ๊ฒ์ ์กฐ๊ฑด์ ์ฌ์ฉํ ๊ฒ์ ์ฌ์ฉ์ ๊ฐ ์ชฝ์ง ๊ธฐ๋ฅ ๋ฌดํ ์ชฝ์ง ์คํฌ๋กค ๊ฒ์๋ฌผ & ๋๊ธ์ ๋ํ ์๋ ์ชฝ์ง์ ๋ํ ์๋ ์ ์..
ํผ์์ ๊ณต๋ถ๋ฅผ ํ๋ ์ค @RequestBody๋ฅผ ์ฌ์ฉํ๋ ํด๋์ค์ ๊ธฐ๋ณธ ์์ฑ์๋ฅผ ๋ง๋ค์ด์ฃผ์ง ์์์ ์ค๋ฅ๊ฐ ๋ฐ์ํ์์ต๋๋ค. @RequestBody๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ธ๋ฉ ํ ๋๋ ObjectMapper๊ฐ ์ฌ์ฉ๋๋ฉฐ, ์ด๋ ๊ฐ์ ๋ฐ์ธ๋ฉํด์ฃผ๊ธฐ ์ํด์๋ ๊ธฐ๋ณธ ์์ฑ์๊ฐ ํ์์
๋๋ค. ์ฐธ๊ณ ๋ก ObjectMapper๊ฐ ์ฌ์ฉ๋๋ฉด setter๊ฐ ์์ด๋ ๋ฐ์ดํฐ์ ๊ฐ์ด ๋ฐ์ธ๋ฉ ๋ ์ ์์ต๋๋ค. ์ด์ ๊ด๋ จํด์๋ ์๋ ๋ธ๋ก๊ทธ๋ค์ ์ฐธ๊ณ ํ์๋ฉด ์ข์ ๊ฒ ๊ฐ์ต๋๋ค. https://bbbicb.tistory.com/46 @RequestBody ๋ชจ๋ธ์ ๊ธฐ๋ณธ์์ฑ์, setter/getter๊ฐ ํ์ํ๊ฐ? ์๋ก ์ต๊ทผ์ Entity ๋ชจ๋ธ์ ์์ฑ์ ์ฑ๊ฒฉ์ ์ ์๊ฐํด๋ณด๊ณ ๋ถ๋ณํด์ผ ํ๋ ๊ฒ๋ค์ final๋ก ์ ์ธํด ๋ช
ํํ๊ฒ ํ๋ผ๋ ์ฝ๋๋ฆฌ๋ทฐ๋ฅผ ๋ฐ์๋ค. ํ๋ฒ..
์ด์ ํ์ ์๋น์ค ๋ง์ง๋ง์
๋๋ค! ์ปจํธ๋กค๋ฌ๋ฅผ ๊ฐ๋ฐํ์ฌ, Http ์์ฒญ์ ๋ํด ๋ฐ์ดํฐ๋ฅผ ๋ฐํํ ์ ์๋๋ก ์ปจํธ๋กค๋ฌ๋ฅผ ์์ฑํด ๋ณด๊ฒ ์ต๋๋ค. ์ํ๋ฆฌํฐ๋ฅผ ์ด์ฉํ JSON ๋ฐ์ดํฐ๋ก ๋ก๊ทธ์ธ (์๋ฃ) JWT๋ฅผ ์ด์ฉํ ์ธ์ฆ (์๋ฃ) ๋๋ฉ์ธ, ํ
์ด๋ธ ์ค๊ณ, ์ํฐํฐ ์์ฑ (์๋ฃ) ๋๊ธ ์ญ์ ๋ก์ง ๊ตฌํ (์๋ฃ) ํ์๊ฐ์
+ ์ ๋ณด์์ ๋ฑ ํ์ ์๋น์ค ๊ตฌํ (์งํ ์ค) ๊ฒ์ํ ์๋น์ค ๊ตฌํ ๋๊ธ ์๋น์ค ๊ตฌํ (1๋๊ธ -> *(๋ฌดํ) ๋๋๊ธ ๊ตฌ์กฐ) ์์ธ ์ฒ๋ฆฌ ์์ธ ๋ฉ์ธ์ง ๊ตญ์ ํ ์นดํ
๊ณ ๋ฆฌ๋ณ ๊ฒ์ํ ๋ถ๋ฅ ๊ฒ์๊ธ ํ์ด์ง ๋์ ์ธ ๊ฒ์ ์กฐ๊ฑด์ ์ฌ์ฉํ ๊ฒ์ ์ฌ์ฉ์ ๊ฐ ์ชฝ์ง ๊ธฐ๋ฅ ๋ฌดํ ์ชฝ์ง ์คํฌ๋กค ๊ฒ์๋ฌผ & ๋๊ธ์ ๋ํ ์๋ ์ชฝ์ง์ ๋ํ ์๋ ์ ์ํ ์ฌ์ฉ์ ๊ฐ ์ค์๊ฐ ์ฑํ
ํ์๊ฐ์
์ ๊ฒ์ฆ(์: XX๋ํ๊ต XX๊ณผ๊ฐ ์๋๋ฉด ๊ฐ์
ํ ์ ์๊ฒ) Swa..
์ํ๋ฆฌํฐ๋ฅผ ์ด์ฉํ JSON ๋ฐ์ดํฐ๋ก ๋ก๊ทธ์ธ (์๋ฃ) JWT๋ฅผ ์ด์ฉํ ์ธ์ฆ (์๋ฃ) ๋๋ฉ์ธ, ํ
์ด๋ธ ์ค๊ณ, ์ํฐํฐ ์์ฑ (์๋ฃ) ๋๊ธ ์ญ์ ๋ก์ง ๊ตฌํ (์๋ฃ) ํ์๊ฐ์
+ ์ ๋ณด์์ ๋ฑ ํ์ ์๋น์ค ๊ตฌํ (์งํ ์ค) ๊ฒ์ํ ์๋น์ค ๊ตฌํ ๋๊ธ ์๋น์ค ๊ตฌํ (1๋๊ธ -> *(๋ฌดํ) ๋๋๊ธ ๊ตฌ์กฐ) ์์ธ ์ฒ๋ฆฌ ์์ธ ๋ฉ์ธ์ง ๊ตญ์ ํ ์นดํ
๊ณ ๋ฆฌ๋ณ ๊ฒ์ํ ๋ถ๋ฅ ๊ฒ์๊ธ ํ์ด์ง ๋์ ์ธ ๊ฒ์ ์กฐ๊ฑด์ ์ฌ์ฉํ ๊ฒ์ ์ฌ์ฉ์ ๊ฐ ์ชฝ์ง ๊ธฐ๋ฅ ๋ฌดํ ์ชฝ์ง ์คํฌ๋กค ๊ฒ์๋ฌผ & ๋๊ธ์ ๋ํ ์๋ ์ชฝ์ง์ ๋ํ ์๋ ์ ์ํ ์ฌ์ฉ์ ๊ฐ ์ค์๊ฐ ์ฑํ
ํ์๊ฐ์
์ ๊ฒ์ฆ(์: XX๋ํ๊ต XX๊ณผ๊ฐ ์๋๋ฉด ๊ฐ์
ํ ์ ์๊ฒ) Swagger๋ฅผ ์ฌ์ฉํ API ๋ฌธ์ ๋ง๋ค๊ธฐ ์ ๊ณ & ๋ธ๋๋ฆฌ์คํธ ๊ธฐ๋ฅ AOP๋ฅผ ํตํ ๋ก๊ทธ ์ด๋๋ฏผ ํ์ด์ง ์บ์ ๋ฐฐํฌ (+ ๋ฌด์ค๋จ ๋ฐฐํฌ) ๋ฐฐํฌ ..
์ฌ์ค ์์์์ผ๋ก๋ ํ์ -> ๊ฒ์ํ -> ๋๊ธ ์์๋ก ๊ตฌํํ๋๊ฒ ๋ง์ผ๋, ์ ๊ฐ ๋๋ฌด ๋๊ธ์ ๊ตฌํํด๋ณด๊ณ ์ถ์ ๋ง์์ด ์ปค์ ๋๊ธ๋ถํฐ ๊ตฌํํ๋๋ก ํ๊ฒ ์ต๋๋ค. ๋ค๋ฅธ๊ฑฐ ๊ตฌํํ๊ณ ์ค์
์ ๋ด๋ ๊ด์ฐฎ์ต๋๋ค. ์ํ๋ฆฌํฐ๋ฅผ ์ด์ฉํ JSON ๋ฐ์ดํฐ๋ก ๋ก๊ทธ์ธ (์๋ฃ) JWT๋ฅผ ์ด์ฉํ ์ธ์ฆ (์๋ฃ) ๋๋ฉ์ธ, ํ
์ด๋ธ ์ค๊ณ, ์ํฐํฐ ์์ฑ (์๋ฃ) ๋๊ธ ์ญ์ ๋ก์ง ๊ตฌํ (์งํ ์ค) ํ์๊ฐ์
+ ์ ๋ณด์์ ๋ฑ ํ์ ์๋น์ค ๊ตฌํ ๊ฒ์ํ ์๋น์ค ๊ตฌํ ๋๊ธ ์๋น์ค ๊ตฌํ (1๋๊ธ -> *(๋ฌดํ) ๋๋๊ธ ๊ตฌ์กฐ) ์์ธ ์ฒ๋ฆฌ ์์ธ ๋ฉ์ธ์ง ๊ตญ์ ํ ์นดํ
๊ณ ๋ฆฌ๋ณ ๊ฒ์ํ ๋ถ๋ฅ ๊ฒ์๊ธ ํ์ด์ง ๋์ ์ธ ๊ฒ์ ์กฐ๊ฑด์ ์ฌ์ฉํ ๊ฒ์ ์ฌ์ฉ์ ๊ฐ ์ชฝ์ง ๊ธฐ๋ฅ ๋ฌดํ ์ชฝ์ง ์คํฌ๋กค ๊ฒ์๋ฌผ & ๋๊ธ์ ๋ํ ์๋ ์ชฝ์ง์ ๋ํ ์๋ ์ ์ํ ์ฌ์ฉ์ ๊ฐ ์ค์๊ฐ ์ฑํ
ํ์๊ฐ์
์ ๊ฒ์ฆ(์:..
JPA ๊ตฌํ์ฒด๋ก ํ์ด๋ฒ๋ค์ดํธ๋ฅผ ์ฐ์ ๋ค๋ฉด ์ฃผ์ํด์ผ ํ ์ ์ด ์์ต๋๋ค. ์ฝ๋๋ฅผ ๋ณด๋ฉฐ ์ดํด๋ณด๊ฒ ์ต๋๋ค. ๋ฌธ์ ๊ฐ ๋๋ ์ํฉ์ ๊ฐ๋ตํ ์ฝ๋๋ก ๋ํ๋ด์ด ๋ณด๊ฒ ์ต๋๋ค. @Getter @NoArgsConstructor(access = AccessLevel.PROTECTED) @Entity @Table(name = "member") public class Member { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "member_id") private long id; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "team_id") private Team team; public void set..
ํ์๊ฐ์
์, ๋๋ฉ์ธ ์ค๊ณ๊ฐ ๋๋๊ณ ์ดํ ํ์ ์๋น์ค๋ฅผ ๊ตฌํํ ๋ ๊ตฌํํ๋๋ก ํ๊ฒ ์ต๋๋ค! ์ํ๋ฆฌํฐ๋ฅผ ์ด์ฉํ JSON ๋ฐ์ดํฐ๋ก ๋ก๊ทธ์ธ (์๋ฃ) JWT๋ฅผ ์ด์ฉํ ์ธ์ฆ (์๋ฃ) ๋๋ฉ์ธ, ํ
์ด๋ธ ์ค๊ณ, ์ํฐํฐ ์์ฑ (์งํ ์ค) ๋๊ธ ์ญ์ ๋ก์ง ๊ตฌํ ํ์๊ฐ์
+ ์ ๋ณด์์ ๋ฑ ํ์ ์๋น์ค ๊ตฌํ ๊ฒ์ํ ์๋น์ค ๊ตฌํ ๋๊ธ ์๋น์ค ๊ตฌํ (1๋๊ธ -> *(๋ฌดํ) ๋๋๊ธ ๊ตฌ์กฐ) ์์ธ ์ฒ๋ฆฌ ์์ธ ๋ฉ์ธ์ง ๊ตญ์ ํ ์นดํ
๊ณ ๋ฆฌ๋ณ ๊ฒ์ํ ๋ถ๋ฅ ๊ฒ์๊ธ ํ์ด์ง ๋์ ์ธ ๊ฒ์ ์กฐ๊ฑด์ ์ฌ์ฉํ ๊ฒ์ ์ฌ์ฉ์ ๊ฐ ์ชฝ์ง ๊ธฐ๋ฅ ๋ฌดํ ์ชฝ์ง ์คํฌ๋กค ๊ฒ์๋ฌผ & ๋๊ธ์ ๋ํ ์๋ ์ชฝ์ง์ ๋ํ ์๋ ์ ์ํ ์ฌ์ฉ์ ๊ฐ ์ค์๊ฐ ์ฑํ
ํ์๊ฐ์
์ ๊ฒ์ฆ(์: XX๋ํ๊ต XX๊ณผ๊ฐ ์๋๋ฉด ๊ฐ์
ํ ์ ์๊ฒ) Swagger๋ฅผ ์ฌ์ฉํ API ๋ฌธ์ ๋ง๋ค๊ธฐ ์ ๊ณ & ๋ธ๋๋ฆฌ์คํธ ๊ธฐ๋ฅ ..