Gallery
Search

AWS RDS ์ฌ์ฉ์ด์
โข
์ดํ๋ฆฌ์ผ์ด์
์ฝ๋๋ฅผ ์์ฑํ๋๊ฒ ๋งํผ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋ค๋ฃจ๋ ์ผ์ ์ค์ํจ
โข
DBA๋ผ๋ ์ง๊ตฐ์ด ์์ง๋ง ๋ฐฑ์๋ ๊ฐ๋ฐ์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋ค๋ฃจ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์, ๊ฐ์ฅ ๊ฐ๊น์
โข
๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๊ตฌ์ถํ๊ณ EC2 ์๋ฒ์ ์ฐ๋ํ๊ณ ์ํจ
โฆ
RDS๋ AWS ์ธํ๋ผ ์์์ ์ง์ํ๋ ํด๋ผ์ฐ๋ ๊ธฐ๋ฐ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค
โฆ
EC2์ ๋ง์ฐฌ๊ฐ์ง๋ก ์ฉ๋์ ์กฐ์ ํ๋๋ฐ ํ๋ ฅ์ ์
โฆ
์ถ๊ฐ์ ์ผ๋ก AWS ์ธํ๋ผ ์์์ ๋ฐฑ์
, ์ค์ , ํจ์น ๋ฑ ์๋ํ๋ก ๊ฐ๋ฐ์ ์ง์ค ํ ์ ์๋๋ก ํจ
[Spring-LDW] AWS RDS ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ๊ฒฝ ๋ง๋ค๊ธฐ

์ฝ๋ ์์ ์ดํ ๋ฐ์ํ๋ 403 ์๋ฌ
์์
๋ก๊ทธ์ธ ๊ตฌํ ์ดํ ๋ก๊ทธ์ธโ๊ฒ์๊ธ ์์ฑ์์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๊ณ ์๋ค. HTTP ์๋ต ์ฝ๋ ์ค 403๋ฒ Forbidden(๊ถํ๊ณผ ๊ด๋ จ๋ ์์ฒญ ๊ฑฐ๋ถ) ์ค๋ฅ์ด๋ค.

HTTP Status Code์ ์ค๋ฅ ํด๊ฒฐ์ ์์
HTTP ์๋ต์ StatusCode์ธ ์ซ์๋ก ํํ๋ ์ฝ๋๊ฐ ํจ๊ป ๋ฐํ๋๋ค. ์๋ต ์ฝ๋์ ๊ด๋ จ๋ ์ ๋ฆฌ๋ ๋ค์๊ณผ ๊ฐ๋ค.
[Spring-LDW] ์ฌ๋ฌ ์ฝ๋ ์์ ์ดํ HTTP Status Code (403)์ค๋ฅ ์์ธ์ฐพ๊ธฐ - ํด๊ฒฐ์ค

์ฐ๊ด๊ด๊ณ๋ฅผ ํด์ผํ๋ ์ด์ ?
ํ๋ก์ ํธ ๊ธฐ๋ณธ ๊ตฌ์กฐ๊ฐ ์์ฑ๋์์ง๋ง User, Posts ํ
์ด๋ธ๊ฐ์ ์ฐ๊ด๊ด๊ณ๊ฐ ์ค์ ๋์ด์์ง ์๋ค. 1:N, 1:1, N:N ๋ฑ ์ฐ๊ด ๊ด๊ณ์ ๋จ๋ฐฉํฅ, ์๋ฐฉํฅ ์ฐ๊ด ๊ด๊ณ๋ฅผ ์ค์ ํ๋ ๊ฒ์ ๋ฐฐ์์๊ณ ์ด ํ๋ก์ ํธ์๋ ์ ์ฉํ๊ณ ์ ํ๋ค.
๊ทธ๋ผ ์ ์ฐ๊ด๊ด๊ณ๊ฐ ํ์ํ ๊น?
์์ฝํ๋ฉด ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ์งํฅํ๋๋ฐ ์์ด ์์ฐ์ค๋ฌ์ด ๊ฐ์ฒด๊ฐ์ ๊ด๊ณ๋ฅผ ๋ง๋ค๊ธฐ ์ํด์๋ค.
์ผ๋ฐ์ ์ผ๋ก ํน์ ์ ์ ๊ฐ ๊ฒ์๊ธ์ ์์ฑํ๊ฒ ๋ ๊ฒ์ด๋ฉฐ, ์ ์ ๋ฅผ ํตํด์ ๋ฌด์จ ๊ฒ์๊ธ์ ์์ฑํ๋์ง ์๊ณ ์ถ์ ์๋ ์๊ณ , ๊ฒ์๊ธ์ ํตํด์ ๋๊ฐ ์์ฑํ ๊ฒ์๊ธ์ธ์ง ์๊ณ ์ถ์ ๋๋ ์๋ค. ์ด์ฒ๋ผ ๊ฐ์ฒด๊ฐ์ ์์ฐ์ค๋ฌ์ด ์ฐ๊ฒฐ์ ์ํด์ ์ฐ๊ด ๊ด๊ณ๋ฅผ ์๊ฐํด์ผ ํ๋ ๊ฒ์ด ๊ธฐ๋ณธ์ด๋ค. ์ด๊ฒ์ ๊ณง ๋ ๊ฐ์ฒด๊ฐ์ ์ผ๊ด์ฑ์ ์ ์งํ๋ ๋ชฉ์ ์ด ํฌ๋ค.
์ฐ๊ด๊ด๊ณ๋ฅผ ๋งบ์ผ๋ ค๋ ์ด์ ๋ ๋ค์์ฒ๋ผ ์ ๋ฆฌ ํ ์ ์๋ค.
[Spring-LDW] ์ ์ :๊ฒ์๊ธ 1:N ์๋ฐฉํฅ ์ฐ๊ด๊ด๊ณ ์ค์ ๋ฐ ํ
์คํธ ์ฝ๋ ์์ ์ค ์ง๋ ฌํ/์ญ์ง๋ ฌํ ํธ๋ฌ๋ธ ์ํ

EC2 ์คํํ๊ธฐ
EC2 ์์ฑ์ด ์๋ฃ๋๋ฉด ์๋์ผ๋ก ํด๋น ์๋ฒ๋ ์คํ๋๊ฒ ๋๋ค. ์ธ์คํด์ค ์ํ๊ฐ ์ค์ง์ธ ๊ฒฝ์ฐ ์์์ ํตํด ์ปดํจํฐ๋ฅผ ๋ถํ
์์ผ ์ฌ์ฉ ๊ฐ๋ฅํ ์ํ๋ก ๋ง๋ ๋ค.
EC2 ์๋ฒ์ ์ ์ํ๊ธฐ
์ฐ์ SSH(์ํ์ด์)๋ก ์ ์ํ๊ธฐ ์ํด์๋ EC2 ์์ฑ์์ ์ค์ ํ๋ ํค๊ฐ ํ์ํ๋ค. .pem ํ์ฅ์๋ก ๋ก์ปฌ์ ๋ค์ด๋ก๋ ๋ฐ์๋ ํค์ธ๋ฐ ๋ง์คํฐํค์ ๊ฐ์ ์ญํ ์ ํ๊ธฐ ๋๋ฌธ์ ๋
ธ์ถ๋๊ฑฐ๋ ์ญ์ ํ๋ฉด ์๋๋ค.(์ฌ๋ฐ๊ธํ์)
EC2๋ IP์ฃผ์ ๋๋ ์ ์ ์ฃผ์๊ฐ ์๋๋ฐ ๊ฐ๋จํ๊ฒ ์๋์ ๊ฐ์ด ์ธ์คํด์ค ์ ๋ณด ์ธ๋ถ ์ฌํญ์์ โ์ฐ๊ฒฐโ ์ด๋ผ๋ ๋ถ๋ถ์์ ํฐ๋ฏธ๋ ๋ช
๋ น์ด๋ฅผ ์ฐพ์ ์๋ ์๋ค.

[Spring-LDW] AWS EC2 ์ ์ํ๊ธฐ, ์ด๊ธฐ ์ค์ ํ๊ธฐ + SSH ์ ์ ์ ์ค๋ฅ ํด๊ฒฐ(WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!)

EC2๋?
Amazon Elastic Compute Cloud(Amazon EC2)๋ Amazon Web Services(AWS) ํด๋ผ์ฐ๋์์ ์จ๋๋งจ๋ ํ์ฅ ๊ฐ๋ฅ ์ปดํจํ
์ฉ๋์ ์ ๊ณตํฉ๋๋ค. Amazon EC2๋ฅผ ์ฌ์ฉํ๋ฉด ํ๋์จ์ด ๋น์ฉ์ด ์ ๊ฐ๋๋ฏ๋ก ์ ํ๋ฆฌ์ผ์ด์
์ ๋์ฑ ๋น ๋ฅด๊ฒ ๊ฐ๋ฐํ๊ณ ๋ฐฐํฌํ ์ ์์ต๋๋ค. Amazon EC2๋ฅผ ์ฌ์ฉํ์ฌ ์ํ๋ ์์ ๊ฐ์ ์๋ฒ๋ฅผ ๊ตฌ์ถํ๊ณ ๋ณด์ ๋ฐ ๋คํธ์ํน์ ๊ตฌ์ฑํ๋ฉฐ ์คํ ๋ฆฌ์ง๋ฅผ ๊ด๋ฆฌํ ์ ์์ต๋๋ค. ์ฉ๋์ ์ถ๊ฐ(์ค์ผ์ผ ์
)ํ์ฌ ์๊ฐ ๋๋ ์ฐ๊ฐ ํ๋ก์ธ์ค ๋๋ ์น ์ฌ์ดํธ ํธ๋ํฝ ๊ธ์ฆ ๋ฑ ์ปดํจํ
์ฌ์ฉ๋์ด ๋ง์ ์์
์ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค. ์ฌ์ฉ๋์ด ๊ฐ์ํ๋ฉด ์ฉ๋์ ๋ค์ ์ถ์(์ค์ผ์ผ ๋ค์ด)ํ ์ ์์ต๋๋ค.
โข
EC2๋ ์ ๋์ ์ผ๋ก ์ฌ์์ ๋๋ฆด ์ ์๋ ํด๋ผ์ฐ๋ ์ปดํจํ
ํ๋ซํผ
โข
์ฌ์ฉ์๊ฐย ๊ฐ์ ์ปดํจํฐ๋ฅผ ์๋ ๋ฐ์ ๊ทธ ์์ ์์ ๋ง์ ์ปดํจํฐ ์ ํ๋ฆฌ์ผ์ด์
๋ค์ ์คํํ ์ ์๊ฒ ํ๋ค.
โข
"์ผ๋์คํฑ"(elastic, ํ๋ ฅ์ ์ธ)์ด๋ผ๋ ์ฉ์ด๋ฅผ ํตํด ์ฉ๋, ์๊ฐ์ ๋ํด ํ๋ ฅ์ ์ผ๋ก ์ฌ์ฉ ํ ์ ์์์ ๋ณผ ์ ์๋ค.
[Spring-LDW] AWS EC2 ์ธ์คํด์ค ์์ฑํ๊ธฐ

AWS ์๋น์ค ๊ฐ์
์ด๋ฏธ ๊ณผ๊ฑฐ AWS ์๋น์ค ๊ฐ์
์ ์งํํ์ง๋ง ๊ฐ์
๊ณผ์ ์ ๋ค์ ํ๋ฒ ์ ๋ฆฌํ๊ณ ์ ํ๋ค.
๋ฐฐํฌ๋? Publishing?
โข
์น ์๋น์ค๋ฅผ ๋ค๋ฅธ ์ฌ๋์ด ์ฌ์ฉํ ์ ์๊ฒ ๋ด๋์ ๊ฒ์ ๋ฐฐํฌ๋ผ๊ณ ํจ
โข
์น์ ๊ฐ๋ฐํ ํ๊ฒฝ์์ ๊ณ์ ์น ์๋น์ค๋ฅผ ์คํ์์ผ๋๋ ค๋ฉดย ๋ด ์ปดํจํฐ๋ฅผ ์ผ๋ฌ์ผ ํจ
โข
๋ด ์ปดํจํฐ๋ฅผ ์ธ์ ๊น์ง๊ณ ์ผ ๋์ ์์ผ๋, ์ปดํจํฐ๋ฅผ ํ๋ ๋น๋ ค์ ๊ณ์ ์ผ๋์! โ ์ฐ๋ฆฌ๊ฐ ์๊ณ ์๋ ์๋ฒ
[Spring-LDW] AWS ๊ฐ์
๊ณผ ํคํ์ด ์์ฑ๊น์ง ์ด๊ธฐ ๊ณ์ ์ธํ

์ด์ ํ ์คํธ์ฝ๋์ ๋ค๋ฅธ์
์ค์บ ๋์์์ SecurityConfig๋ฅผ ์ ๊ฑฐ
@WebMvcTest์ด๋
ธํ
์ด์
์ excludeFilters ์์ฑ์ ์ถ๊ฐํ์ฌ SecurityConfig.class๋ฅผ ์ ๊ฑฐํ๋ค. ํด๋น ๋ฐฉ๋ฒ์ ์ถํ ์ฌ์ฉํ์ง ์๋ ๊ฒ์ ๊ถ์ฅํ๊ณ ์๋ค.
[Spring-LDW] ์คํ๋ง ์ํ๋ฆฌํฐ ์ถ๊ฐ ํ @WebMvcTest์์ OAuthService๋ฅผ ๋ชป์ฐพ๋ ์ค๋ฅ ํด๊ฒฐ

๊ฒ์๊ธ ๋ฑ๋ก ํ ์คํธ์ฝ๋์ ์ค๋ฅ
์คํ๋ง ์ํ๋ฆฌํฐ ์ ์ฉ ์ ์ ์ ์ ์๋(200 Status Code)ํ๋ ํ
์คํธ ์ฝ๋๊ฐ ๋ฆฌ๋ค์ด๋ ์
(302 Status Code) ์๋ต์ด ๋ํ๋๋ ์ค๋ฅ๊ฐ ์๋ค.
์ธ์ฆ๋์ง ์์ ์ฌ์ฉ์์ ์์ฒญ
์คํ๋ง ์ํ๋ฆฌํฐ ์ค์ ์ ์ธ์ฆ๋์ง ์์ ์ฌ์ฉ์์ ์์ฒญ์ ์ด๋์ํจ๋ค. ๋ฐ๋ผ์ ์ด๋ฐ API ์์ฒญ์ ์์๋ก ์ธ์ฆ๋ ์ฌ์ฉ์๋ฅผ ์ถ๊ฐ(๋ชจ์๊ฐ์ฒด)๋ฅผ ํตํด ์์ฒญ API๋ง ํ
์คํธ ํ ์ ์๋๋ก ์์ ํด์ผ ํ๋ค.(ํด๋น ํ
์คํธ ์ฝ๋๋ API ์์ฒญ์ ํ
์คํธ ์๋์ด๊ธฐ ๋๋ฌธ)
[Spring-LDW] ์คํ๋ง ์ํ๋ฆฌํฐ ์ ์ฉ ํ ํ
์คํธ ์ฝ๋ ์์ 302, Type definition error์ค๋ฅ ํด๊ฒฐ

application.properties์ ํ ์คํธ์ฉ ์ค์ ๋ฌธ์
๊ต์ฌ์์๋ CustomOAuth2UserService๋ฅผ ํตํด ๋ถ๋ฌ์ค๊ณ ์๋ ๊ฐ์ข
์์
๋ก๊ทธ์ธ ์ค์ ๊ฐ(application-oauth.properties)์ ๋ชป๋ถ๋ฌ์ค๊ณ ์๊ธฐ ๋๋ฌธ์ ์ด ์ค๋ฅ๋ฅผ test ๋๋ ํ ๋ฆฌ์ ํ
์คํธ ํ๊ฒฝ์ ์ํ application.properties ๋ชจ์ํ์ผ์ ๋ง๋ค์ด ํด๊ฒฐํ๊ณ ์๋ค.
ํ์ง๋ง ๋์ผํ ํ์ผ์ ์์ฑ ํ์ ๋ ์๋์ ๊ฐ์ด ์ ํ ๋ค๋ฅธ ์ค๋ฅ๊ฐ ๋ฐ์ํ๊ณ ์๋ค.

์ฒ์์ ๋ฒ์ ์ ๋ฌธ์ ์ผ๊น? ๋ผ๋ ์๊ฐ์ ํ๋ค. ๊ทธ ์ด์ ๋ ์ค๋ฅ ์ฝ๋์ ๋ํ ๊ฒ์์ ํตํด์๋ ๊ทธ๋ ์ด๋ค๊ณผ ์คํ๋ง๋ถํธ ๋ฒ์ ๊ณผ ๊ด๋ จ๋ ํด๊ฒฐ์๋ค์ด ์ค๋ช
๋ ๊ฒฝ์ฐ๊ฐ ๋ง์๋ค. ํ์ง๋ง ๋ค์ด๊ทธ๋ ์ด๋ ์์ฒด์ ๋ฌธ์ ๊ฐ ์์๊ณ ๋ค์ ์ค๋ฅ ์ฝ๋๋ฅผ ์์ธํ ์ดํด ๋ณด์๋ค. ๊ฒฐ๊ณผ์ ์ผ๋ก ์ค๋ฅ ๋ฌธ๊ตฌ์์ SQL๊ณผ ๊ด๋ จ๋ ์ค๋ฅ๋ก ๊ฒฐ๊ตญ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ๋ฌธ์ ์ธ ๊ฒ์ผ๋ก ์ถ๋ ค๋๋ค.
[Spring-LDW] ํ
์คํธ์ฝ๋ ์์ ์ค ์ค๋ฅํด๊ฒฐ could not prepare statement; SQL โฆ

๋ค์ด๋ฒ ๋๋ฒจ๋กํผ์ค ์ฑ ์์ฑ
๋ค์ด๋ฒ ์คํ API๋ก ์ด๋ํ์ฌ ์ดํ๋ฆฌ์ผ์ด์
์ ๋ฑ๋กํ๋ค.


๊ฐ ํญ๋ชฉ์ ๊ฐ๋ค์ ์
๋ ฅํ๋ฉด Client ID, Client Secret ํค๋ฅผ ๋ฐ์ ์ ์๋ค.
[Spring-LDW] ๋ค์ด๋ฒ ๋ก๊ทธ์ธ ๊ตฌํ

ํ์ฌ ์๋น์ค์ ์ํ
์ดํ๋ฆฌ์ผ์ด์
์ ์ฌ์คํํ๋ฉด ๋ก๊ทธ์ธ์ด ํ๋ฆฌ๊ฒ ๋๋ค.
โ ๊ทธ ์ด์ ๋ Session์ด ๋ด์ฅ ํฐ์บฃ์ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅ๋๊ธฐ ๋๋ฌธ
โข
๊ธฐ๋ณธ์ ์ผ๋ก ์ธ์
์ ์คํ๋๋ WAS(Web Application Server)์ ๋ฉ๋ชจ๋ฆฌ์์ ์ ์ฅ๋๊ณ ํธ์ถ
โข
๋ฐ๋ผ์ ๋ด์ฅ ํฐ์บฃ์ฒ๋ผ ์ดํ๋ฆฌ์ผ์ด์
์ด ์คํ ์ ์คํ๋๋ ๊ตฌ์กฐ์์๋ ํญ์ ์ด๊ธฐํ ๋จ(ํ๋ฐ์ฑ)
โข
์ด๋ ๋ฐฐํฌ ๋๋ ์๋ฒ๋ฅผ ์ฌ์์ ํ ๋๋ง๋ค ์ด๊ธฐํ ๋๋ค๋ ๋ง
[Spring-LDW] ์ธ์
์ ์ฅ์๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฌ์ฉํ๊ธฐ ์ค์

๊ฐ์ ์ด ํ์ํ ๋์ ์ฝ๋?
์ผ๋ฐ์ ์ผ๋ก ํด๋ฆฐ์ฝ๋๋ฅผ ์งํฅํ๋ค๋ฉด ์ด๋ค ๊ฒ๋ค์ ์ดํด๋ด์ผ ํ ๊น? ๊ต์ฌ์์๋ ์์ ์ ๋ํด์ ๋ํ์ ์ผ๋ก ๋ค์๊ณผ ๊ฐ์ ๋ด์ฉ์ด ๋ํ๋ฌ๋ค.
๊ฐ์ฅ ๋ํ์ ์ธ ๊ฒ์ ๊ฐ์ ์ฝ๋๊ฐ ๋ฐ๋ณต๋๋ ๋ถ๋ถ์ด๋ผ๊ณ ์๊ฐํ๋ค.
์ด๊ฒ ์ธ์ ๋ด๊ฐ ์๊ฐํ๋ ๋ถ๋ถ์ ํด๋์ค ๋ฐ ๋ณ์, ๋ฉ์๋ ๋ฑ ๊ฐ๋ฐ์๊ฐ ์ง์ ๋ช
๋ช
ํ ์ ์๋ ๊ฒ๋ค์ ์๋ฏธ๊ฐ ๊ทธ๋๋ก ์ฌ์ฉ๋์ด์ผ ํ๋ค๊ณ ์๊ฐํ๋ค. ์ด ๋ถ๋ถ์ ์ฌ๋ฌ ์ ๋ฐฐ ๊ฐ๋ฐ์๋ถ๋ค, ๋ฉํ ๋๋ค์ ํตํด์ ํ๋์ ์์๋ก gubun ์ด๋ผ๋ ์์์๋ ๋ณ์๋ช
์ ์ฌ์ง์ ์์ฃผ ๋ณด์๋ค. ์ฝ๋ ์์ฒด๋ก ์๋ฏธ๊ฐ ์ ๋ฌ์ด ๋ ์ ๋๋ก category ์ ๊ฐ์ด ์์ด ๋ช
์ฌ๋ก, ๋ฉ์๋๋ ๊ฐ๋ตํ ๋์ฌ๋ก ์์ฑํ๋ ๊ฒ์ด ์ข๋ค๋ ์๊ฐ์ด ๋ค์๋ค. ๋ฐ๋ผ์ ๊ต์ฌ์ ์ด๋
ธํ
์ด์
์งํ ์ถ๊ฐ์ ๋๋ถ์ด SessionUser user๋ก ๋์ด์๋ ๋ณ์๋ช
์ SessionUser sessionUser๋ก ๋ณ์ ๋ช
์ ์ข๋ ๋ช
ํํ๊ฒ ์ถ๊ฐํ๋ค. ์ด๋ฌํ ์ฝ๋ ์ ๋ฆฌ๋ฅผ ํตํด์ ์ ์ง + ๋ณด์์ฑ์ ํฅ์ ์ํค๋ ๋ชฉ์ ์ ํญ์ ์๊ฐํด์ผ๊ฒ ๋ค.
IndexContoller์์ ์ธ์
๊ฐ์ ๊ฐ์ ธ์ค๋ ๋ถ๋ถ์ ๊ฐ์ ์ด ํ์ํ๋ค.
SessionUser user = (SessionUser) httpSession.getAttribute("user");
[Spring-LDW] ์์
๋ก๊ทธ์ธ ๋ถ๋ถ ์ด๋
ธํ
์ด์
๊ธฐ๋ฐ์ผ๋ก ๋ฆฌํฉํ ๋ง

๋ฒ์ ๋ณ๊ฒฝ
start.spring.io ์์ ์๋ ์์ฑํ ์คํ๋ง ๋ถํธ 3.2.1(์ต์ ) ๋ฒ์ ์ ๋ง์ถ์ด ์์กด์ฑ์ด ์ถ๊ฐ๋์๋ ํ๋ก์ ํธ ๊ตฌ์กฐ๋ ์ฌ๋ฌ ๋ ํผ๋ฐ์ค๋ค๊ณผ์ ํธํ์ฑ์ด ๋ง์ง ์์์ ๊ตฌํ์ ์ด๋ ค์์ ๊ฒช์๋ค. ์ด๋ฅผ ์ํ์ฌ ๋ช
์์ ์ผ๋ก Spring Boot 2.6.1 / Spring Security 5.6.1 ๋ก ๋ค์ด๊ทธ๋ ์ด๋ํ์ฌ ์ ์ฒด์ ์ธ ์ฝ๋๋ฅผ ๋ฆฌํฉํ ๋งํ๋ค. ๊ฒฐ๊ณผ์ ์ผ๋ก ์ด์ ์ ์๋ํ๋ ๋ณต์กํ ์ฝ๋ ๋ ํผ๋ฐ์ค๋ค์ด ์ ์์ ์ผ๋ก ์๋ํ์ง ์๊ณ ํ์ ์ด์์ ์๊ฐ์ ์์ํ๋ ๋ก๊ทธ์ธ ๊ตฌํ์ ๊ธฐ๋ณธ ํ์ ์ฝ๊ฒ ๋ฐ๋ผ ๊ตฌํ ํ ์ ์์๋ค.
๋ค์์ ์ต์ด ๊ธฐ๋ณธ ๊ตฌ์กฐ์ด๋ค. ๋ค์ ๊ธ์์ ๊ณง๋ฐ๋ก ๊ฐ์ข
์ด๋
ธํ
์ด์
์ ํ์ฉํ ๋ฐฉ๋ฒ์ผ๋ก ๋ฆฌํฉํ ๋งํ์ฌ ๋ณด๋ค ๊น๋ํ ์ฝ๋๋ก ์ ๋ฆฌํ ๊ฒ์ด์ง๋ง ๊ธฐ๋ณธ์ ์ธ ๊ตฌ์กฐ๋ฅผ ์ฐ์ ๊ธฐ๋กํด๋๋ ค๊ณ ํ๋ค.
build.gradle
[Spring-LDW] ์คํ๋ง ์ํ๋ฆฌํฐ ๊ตฌ๊ธ๋ก๊ทธ์ธ ๊ธฐ๋ฅ ๊ตฌํ

์คํ๋ง ์ํ๋ฆฌํฐ์ ์คํ๋ง ์ํ๋ฆฌํฐ Oauth2 ํด๋ผ์ด์ธํธ
์ ๋ง์ ์๋น์ค์์ ์์
๋ก๊ทธ์ธ์ ์ฌ์ฉํ ๊น? ์ง์ ๊ตฌํํ ๊ฒฝ์ฐ ๋ฐฐ๋ณด๋ค ๋ฐฐ๊ผฝ์ด ์ปค์ง๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค.
โข
๋ก๊ทธ์ธ ์ ๋ณด์
โข
ํ์๊ฐ์
์ ์ด๋ฉ์ผ ๋๋ ์ ํ๋ฒํธ ์ธ์ฆ
โข
๋น๋ฐ๋ฒํธ ์ฐพ๊ธฐ
โข
๋น๋ฐ๋ฒํธ ๋ณ๊ฒฝ
[Spring-LDW] ์คํ๋ง ์ํ๋ฆฌํฐ์ OAuth2.0์ผ๋ก ๋ก๊ทธ์ธ ๊ธฐ๋ฅ ๊ตฌํํ๋ ์ค ๋ฒ์ ์ ํ์ ๋ํ ๋ฌธ์ ๋ฅผ ๊ณ ๋ฏผ

๊ฒ์๊ธ ์์ (UPDATE) ํ๋ฉด ๊ตฌ์ฑํ๊ธฐ
posts-update.mustache
{{post.id}}
โข
๋จธ์คํ
์น๋ ๊ฐ์ฒด์ ํ๋ ์ ๊ทผ ์ ์ (๋ํธ ๊ตฌ๋ถ์)๋ก ๊ตฌ๋ถ
โข
Post ํด๋์ค์ id ํ๋์ ๋ํ ์ ๊ทผ์ post.id๋ก ์ ๊ทผ
[Spring-LDW] ๊ฒ์๊ธ ์์ ๋ฐ ์ญ์ ํ๋ฉด ๋ง๋ค๊ธฐ

๊ฒ์๊ธ ์กฐํ(READ) ํ๋ฉด ๊ตฌ์ฑํ๊ธฐ
index.mustache
๋จธ์คํ ์น์ ๋ฌธ๋ฒ {{#posts}}
โข
posts๋ผ๋ List๋ฅผ ์ํ
โข
Java์ ๋ฌธ๊ณผ ๋์ผํ๊ฒ ์๊ฐ
[Spring-LDW] ๊ฒ์๊ธ ์กฐํ ํ๋ฉด ๋ง๋ค๊ธฐ

๋ถํธ์คํธ๋ฉ์ด๋?
โข
๋ถํธ์คํธ๋ฉ์ ์น์ฌ์ดํธ๋ฅผ ์ฝ๊ฒ ๋ง๋ค ์ ์๊ฒ ๋์์ฃผ๋ CSS, JS ํ๋ ์์ํฌ์ด๋ค.
โข
ํ๋์ ์ฝ๋๋ก ํด๋ํฐ, ํ๋ธ๋ฆฟ, ๋ฐ์คํฌํ๊น์ง ๋ค์ํ ๊ธฐ๊ธฐ์์ ์๋ํ๊ฒ ๋ง๋ค ์ ์์ผ๋ฉฐ, ๋ค์ํ ๊ธฐ๋ฅ์ ์ ๊ณตํ์ฌ ์ฌ์ฉ์๊ฐ ์ฝ๊ฒ ์น์ฌ์ดํธ๋ฅผ ์ ์, ์ ์ง, ๋ณด์ํ ์ ์๋๋ก ๋์์ค๋ค.
โข
๋ถํธ์คํธ๋ฉ์ ํตํด์ ๋ณด๋ค ์ฝ๊ฒ ์นํ์ด์ง ๋์์ธ์ ์ํ๋ ๋ชจ์ต์ผ๋ก ๊ตฌํํ๊ธฐ ์ข๋ค.
jQuery๋?
[Spring-LDW] ๊ฒ์๊ธ ๋ฑ๋ก ํ๋ฉด ๋ง๋ค๊ธฐ

ํ ํ๋ฆฟ์์ง?
์ฐ์ ์น ๊ฐ๋ฐ์ ์์ด ํ
ํ๋ฆฟ ์์ง์ด๋, ์ง์ ๋ ํ
ํ๋ฆฟ ์์๊ณผ ๋ฐ์ดํฐ๊ฐ ํฉ์ณ์ ธ HTML๋ฌธ์๋ฅผ ์ถ๋ ฅํ๋ ์ํํธ์จ์ด๋ฅผ ์ด์ผ ๊ธฐํ๋ค. ์ฝ๊ฒ ์ด์ผ๊ธฐํด์, ์น์ฌ์ดํธ ํ๋ฉด์ ์ด๋ค ํํ๋ก ๋ง๋ค์ง ๋์์ฃผ๋ ์์์ด๋ผ๊ณ ์๊ฐํ๋ฉด ๋๋ค.
ํ
ํ๋ฆฟ ์์ง์ด๋ ๊ฐ๋จํ ๋งํ๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
โข
์ง์ ๋ ํ
ํ๋ฆฟ ์์๊ณผ ๋ฐ์ดํฐ๊ฐ ํฉ์ณ์ ธ HTML ๋ฌธ์๋ฅผ ์ถ๋ ฅํ๋ ์ํํธ์จ์ด์ด๋ค.
[Spring-LDW] ํ
ํ๋ฆฟ ์์ง? ๋จธ์คํ
์น ์ฌ์ฉํด๋ณด๊ธฐ(VS Thymeleaf)

JPA Auditing์ ํ์์ฑ?
๋ฐ์ดํฐ๋ฒ ์ด์ค์์ย ๋๊ฐ, ์ธ์ ํ์๋์ง ๊ธฐ๋ก์ ์ ๋จ๊ฒจ๋์์ผ ํฉ๋๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ์์ฑ์ผ, ์์ ์ผ ์ปฌ๋ผ์ ๋๋จํ ์ค์ํ ๋ฐ์ดํฐ ์
๋๋ค.
๊ทธ๋์ JPA์์๋ย Audit์ด๋ผ๋ ๊ธฐ๋ฅ์ ์ ๊ณตํ๊ณ ์์ต๋๋ค. Audit์ย ๊ฐ์ํ๋ค, ๊ฐ์ฌํ๋ค๋ผ๋ ๋ป์ผ๋ก Spring Data JPA์์ ์๊ฐ์ ๋ํด์ ์๋์ผ๋ก ๊ฐ์ ๋ฃ์ด์ฃผ๋ ๊ธฐ๋ฅ์
๋๋ค.
์ฐธ๊ณ ๋ก ์๋ฐ 1.8 ์ด์๋ถํฐ๋ ๊ธฐ์กด์ ๋ฌธ์ ๊ฐ ์๋ Date, Calander ํด๋์ค๋ฅผ ์ฌ์ฉํ์ง ์๊ณ LocalDate, LocalDateTime ํด๋์ค๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๋ํ LocalDateTime ๊ฐ์ฒด์ ํ
์ด๋ธ ์ฌ์ด์ ๋งคํ์ด ์๋๋ ์ด์๋ ํ์ด๋ฒ๋ค์ดํธ 5.2 ๋ฒ์ ๋ถํฐ ํด๊ฒฐ์ด ๋์์ต๋๋ค.
๊ฒ์๊ธ์ ํ์์คํฌํ ๊ธฐ๋ฅ ์ถ๊ฐํ๊ธฐ
[Spring-LDW] Timestamp์ฉ๋์ ํด๋์ค ์์ฑ ๋ฐ JPA Auditing ์ค์

API๋ฅผ ๋ง๋ค๊ธฐ ์ํ ํด๋์ค
โข
Request ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ Dto ํด๋์ค
โข
API ์์ฒญ์ ๋ฐ์ Controller
โข
ํธ๋์ญ์
, ๋๋ฉ์ธ ๊ธฐ๋ฅ๊ฐ์ ์์๋ฅผ ๋ณด์ฅํ๋ Service
Service์ ์ญํ ?
๊ต์ฌ์์๋ ๋ด๊ฐ ํ์์ ์๊ณ ์๋ ๋ด์ฉ๊ณผ ์กฐ๊ธ ๋ค๋ฅธ ๋ฐฉ์์ ๋ฌธ๊ตฌ๊ฐ ์ ํ์์๋ค.
[Spring-LDW] ๋ฑ๋ก/์์ /์กฐํ API ๋ง๋ค๊ธฐ

MyBatis(iBatis)โJPA ๊ฐ์
โข
๊ณผ๊ฑฐ(MyBatis ๋ฅผ ์ฌ์ฉํ๋ ํ๊ฒฝ)์๋ ์ค์ ๋ก ๊ฐ๋ฐํ๋ ์๊ฐ๋ณด๋ค SQL ๋งตํผ๋ฅผ ํตํด ์ฟผ๋ฆฌ๋ฅผ ์์ฑ, ๋ค๋ฃจ๋ ์๊ฐ์ด ๋ ๋ง์๋ค. ๋ํ Java๋ฅผ ๋ฐฐ์ฐ๋ฉด์ ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ๋ฐฐ์ ๋๋ฐ ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ๋ณด๋ค๋ ํ
์ด๋ธ ๋ชจ๋ธ๋ง์ ์ง์คํด์ผํ๋ค.
โฆ
ํ์ง๋ง ์์ง๋ Spring, MyBatis ํ๊ฒฝ์ ๋ง์ด ์ฌ์ฉํ๊ณ ์๋ค.
โข
๊ฐ์ฒด๋ฅผ ํ
์ด๋ธ์ ๋ง์ถ์ด ๋ฐ์ดํฐ ์ ๋ฌ ์ญํ ๋ง ํ๋ ํํ๋ก ๊ฐ๋ฐ์ ํ๋ค๋ณด๋ ์ ๋ฐ์ ์ธ Java๋ฅผ ํตํ ์๋น์ค ๊ฐ๋ฐ์ ๋ฐฉํฅ(ํจ๋ฌ๋ค์)์ ๋ถ์ผ์น๊ฐ ๋ฐ์ํ๋ค.
โข
์ด ํจ๋ฌ๋ค์ ๋ถ์ผ์น๋ฅผ ํด์ํ๊ณ ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฉ ํ ์ ์๋ JPA ๊ธฐ์ ์ ์ฌ์ฉํ๊ณ ์ ํ๋ค.
[Spring-LDW] ์คํ๋ง๋ถํธ์์ JPA์ ์ฉ ๋ฐ ๊ฐ๋จ ํ
์คํธ ์ฝ๋

์๋ฐ ๊ฐ๋ฐ์๋ค์ ํ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋กฌ๋ณต
๋กฌ๋ณต์ @Getter, @Setter, @NoArgsContructor ๋ฑ ์๋นํ ์ฝ๋๋์ ์ค์ผ ์ ์๋ ํ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ค. build.gradle์ dependencies ๋ถ๋ถ์ lombok ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ถ๊ฐํด์ผ ํ๋ค. ํ์ง๋ง ๊ต์ฌ์์์ ์์กด์ฑ ์ถ๊ฐ ์ฝ๋์ ์ฐจ์ด์ ์ด ์๋๋ฐ Gradle ๋ฒ์ ์ด ๋ค๋ฅด๊ธฐ ๋๋ฌธ์ด๋ค. ๊ฒ์ํ ๊ฒฐ๊ณผ ์์ ๊ฐ์ด Gradle 5.x๋ฏธ๋ง, 5.x ์ด์์ ์์ฒ๋ผ ๊ตฌ๋ถํ์ฌ ๋กฌ๋ณต ์์กด์ฑ์ ์ถ๊ฐํด์ฃผ์ด์ผ ํ๋ค.
ํ์ฌ ๋์ Gradle ๋ฒ์ ์ 8.5 ๋ฒ์ ์ด ์ค์น๋์ด์์ผ๋ฉฐ /root/gradle/wrapper/gradle-wrapper.properties ์์ ๊ทธ ๋ฒ์ ์ ํ์ธ ํ ์ ์๋ค.

๋ฐ๋ผ์ build.gradle ์ 5.x ์ด์ ๋ฒ์ ์ ์๋ง๋ ๋กฌ๋ณต ์์กด์ฑ์ ์ถ๊ฐํด์ค๋ค.
[Spring-LDW] ๋กฌ๋ณต(Lombok)๊ณผ ํ
์คํธ ์ฝ๋
ํ๋ก์ ํธ ์์ฑ
๊ต์ฌ๋ ์ธํ
๋ฆฌ์ ์ด ์ปค๋ฎค๋ํฐ ๋ฒ์ ์ ์ฌ์ฉํ์ง๋ง ๋๋ ๊ต์ก๊ณผ์ ์ดํ๋ก ์ธํ
๋ฆฌ์ ์ด ์ผํฐ๋ฐ ๋ฒ์ ์ ์ฅ์ ์ ํ์ธํ๊ณ ์๋น๋ก ๊ฒฐ์ ํด์ ๊ณ์ํด์ ์ฐ์ต์ ์ฌ์ฉํ๊ณ ์๋ค. ๋ฐ๋ผ์ ์ด ๋ถ๋ถ์ ๋์ ํ๊ฒฝ ์ค์ ์ ๋ฐ๋ผ ์งํํ๊ณ ์ ํ๋ค.
ํ๋ก์ ํธ๋ Gradle ๊ธฐ๋ฐ์ ์คํ๋ง ๋ถํธ ํ๋ก์ ํธ๋ก build.gradle์์ ํ๋ก์ ํธ์ ํ์ํ ๋ค์ํ ์์กด์ฑ๋ค์ ๊ด๋ฆฌ ํ๊ฒ ๋๋ค.
repositories๋ถ๋ถ์ mavenCentral ๊ณผ jcenter?
๊ฐ์ข
์์กด์ฑ(๋ผ์ด๋ธ๋ฌ๋ฆฌ)๋ค์ ์ด๋ค ์๊ฒฉ ์ ์ฅ์์์ ๋ฐ์์ค๊ฒ ๋๋ค. ๊ทธ ์ค ์ธํ
๋ฆฌ์ ์ด์์ ๊ธฐ๋ณธ์ ์ผ๋ก ์์ฑ๋๋ ๊ฒ์ mavenCentral์ด๋ค. ์์ ์ ์๋์ผ๋ก ๋ค์ด๋ก๋ ๋ฐ์์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ถ๊ฐํด๋ณธ์ ์ด ์๋๋ฐ
์ ๋งํฌ์์ ๋ค์ด๋ก๋ ๋ฐ์์ jarํ์ผ์ ํ๋ก์ ํธ์ ์ํฌํธํ๋ ๊ณผ์ ์ด์๋ค.
mavenCentral์ ์ด์ ๋ถํฐ ๋ง์ด ์ฌ์ฉํ๋ ์ ์ฅ์์ง๋ง, ๋ณธ์ธ์ด ๋ง๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์
๋ก๋ํ๊ธฐ ์ํด์๋ ์ ๋ง ๋ง์ ๊ณผ์ ๊ณผ ์ค์ ์ด ํ์ํฉ๋๋ค. โฆ ์ ์ ๊ณต์ ๊ฐ ์ ๋๋ ์ํฉ์ด ๋ฐ์ํ์ต๋๋ค. ์ต๊ทผ์ ๋์จ jcenter๋ ์ด๋ฐ ๋ฌธ์ ์ ์ ๊ฐ์ ํ์ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์
๋ก๋๋ฅผ ๊ฐ๋จํ๊ฒ ํ์์ต๋๋ค..
jcenter๋ ์ฒ์ ๋ค์ด๋ณด๋ ์ด๋ฆ์ด๋ค. ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ฐ์์ค๋ ๋ ํฌ์งํ ๋ฆฌ๋ฅผ mavenCentral๋ง๊ณ ๋ jcenter๋ฅผ ์ฌ์ฉ ํ ์ ์๋ ๊ฒ์ ์๊ฒ ๋์๋ค. ๋น์ฅ์ ์ด๋ค ์ฐจ์ด์ ์ด ์๋์ง๋ ๋ถํ์คํ๋ค. ์๋ง ๊ฐ๋ ๋๋ฝ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฑ์ jcenter๋ฅผ ํตํด์ ๋ฐ์ ์ฌ ์ ์์ ๊ฒ ๊ฐ๋ค. ํนํ ์์กด์ฑ ๋ฒ์ ํธํ ๊ด๋ จ๋ ๋ฌธ์ ๋ ํ๋ก์ ํธ ์งํ ์ค ์๋ก ๋ณต์กํ๊ฒ ์ฝํ ์์ด์ ๋ฒ์ ๊ณผ ๊ด๋ จ๋ ๋ฌธ์ ๋ฑ์ด ๋ฐ์ ํ ๋ jcenter์ ๋ํด์๋ ์ธ์งํ๊ณ ์์ด์ผ ํ ๊ฒ ๊ฐ๋ค.
์กฐ๊ธ ๋ ์ฐพ์๋ณด๋ ๋ค์๊ณผ ๊ฐ์ ์ฐจ์ด์ ์ด ์์๋ค.

jcenter ํด๋ก์ง?
Gradle๋ธ๋ก๊ทธ์ ๋ค์๊ณผ ๊ฐ์ ๊ธ์ด ๊ฒ์๋ ๊ฒ์ ํ์ธํ๋ค. ์ด์ ์ฌ์ฉ์ด ์๋๋ ๊ฒ์ธ์ง ๊ธฐ์กด jcenter๋ฅผ ์ฌ์ฉํ ๋ถ๋ถ์ ๋ํด์ mavenCentral๋ก ๊ต์ฒดํ๋ผ๋ ๋ด์ฉ์ด ํฌํจ๋์ด ์๋ค.
[Spring-LDW] ํ๋ก์ ํธ ์์ฑ๊ณผ ๊ฐ๋จ API ์์ฑ ๋ฐ ํ
์คํธ ์ฝ๋ ์ฌ์ฉํด๋ณด๊ธฐ

๊ต๊ณผ์์ ์ธ, ์ ๋๋ ์ ๋ฐฐ์ ์ฝ๋๋ค์ ๋ฐ๋ผ๊ฐ์
ํ๋ก์ ํธ๋ฅผ ํ๋ฉด์ ๋๊ปด์จ ๊ฒ๋ค์ ๋ด๊ฐ ์์ฑํ๋ ์ฝ๋์ ์ ๋์ํ, ์ด๋ป๊ฒ ๊ตฌํํ๋ ๊ฒ์ด ์ฌ๋ฐ๋ฅธ์ง, ๊ทธ ๊ธฐ์ค์ ์ด๋ป๊ฒ ๋์ด์ผํ๋์ง ํญ์ ๊ณ ๋ฏผ์ด๋ค. ์ด๋ค ์ฝ๋๊ฐ ์ข์ ์ฝ๋์ธ์ง ์ฌ๋ฐ๋ฅธ ์ฌ์ฉ๋ฒ์ธ์ง ๋ง๋์ง ์๋์ง ๋์์์ด ๊ณ ๋ฏผ์ ํ์ง๋ง, ํผ์ ๊ณต๋ถํ๋ ์
์ฅ์์๋ ๋๋ฌด ๋ง์ ์ ๋ณด๋ค์ด ํผ๋์ค๋ฝ๊ฒ ํ๋ค.
์ค์ฒด๋ฅผ ๋ฐ๋ผ ์ฐพ์๋ณด์.
๋จ์ํ ํํธํ๋ ๊ถ๊ธ์ฆ์ ๋ํ ํค์๋ ๊ฒ์์ ๋ํ ๋ง์ ์ ๋ณด๋ค์ ์ข
ํฉํด๋ณด๋ฉด ๋จธ๋ฆฌ์์๋ ์ดํด๊ฐ ๋๋๊ฒ ๊ฐ๋ค. ํด๋ฆฐ ์ฝ๋๋ฅผ ์งํฅํ๋๊ฒ์ ์ฝ๋ ์์ฒด๋ก๋ ์ฃผ์์ด ํ์ ์์ ์ ๋๋ก ๊น๋ํ ์ฝ๋, ๋ช
๋ช
๊ท์น๋ฑ์ ๋ฐ๋ผ์ผ ํ๋ค. ํ์ง๋ง ๊ทธ ๋ฐฉ๋ฒ์ด๋ ์ค๋ฌผ์ ๋ณด์ง ๋ชปํ๊ณ ์ถ์์ ์ผ๋ก ๊ฐ๋
๋ง ์ดํดํ๊ณ ๊ฒฐ๊ตญ ํผ์ ํด๋ณด๋ คํ๊ธฐ ๋๋ฌธ์ ๋ด๊ฐ ์์ฑํ๋ ๊ฒ๋ค์ ๋ํ ์์ ๊ฐ์ด ์๋ค.
๊ฒฐ๊ตญ ์ฐ์ํ ์ ๋ฐฐ๋ฅผ ์ค์ค๋ก ๋ง๋ค๊ณ ํ๋ก์ฐํด์ผํ๋ค. ๊ทธ๋ฐ ๋ถ๋ค์ ์ง์ ๋ณผ ์๋, ๊ฐ์ด ์ผํ๊ณ ์์ง๋ ๊ฐ๋ฅด์นจ์ ๋ฐ์ ๊ธฐํ๊ฐ ๋น์ฅ์ ์๊ธฐ ๋๋ฌธ์ ๊ต์ก์ด๋ ๊ฐ๋ฐ์ ์ ๋ฐฐ๋ค์ ์ฑ
์ ํตํด์ ๋ฐฐ์๋๊ฐ์ผ ํ๋ค. ์ด๋ฒ์ ๋ง์ ๋ฉํ ๋ถ๋ค๊ป ์ถ์ฒ๋ฐ์ ์ด ์ฑ
์ ์ฝ๋๊ฒ๋ง์ด ์๋๋ผ ์ฝ๋๋ก ์ง์ ๋ฐ๋ผํด๋ณด๊ณ ๊ทธ ๊ฐ๋
๋ค์ ์ฝ๊ฒ ์ ๋ฆฌํ๊ฒ๋ค์ ๋ค์ ์ดํด๋ณด๋ฉด์ ๋ด๊ฐ ์๋ชปํ๋๋ถ๋ถ, ๋ฐฐ์์ผํ ๋ถ๋ถ๋ค์ ๋ค์ ํ๋ฒ ์ ๋ฆฌํด๋ณด๊ณ ์ ํ๋ค.
[Spring-LDW] ์คํ๋ง ๋ถํธ ์ฑ
ํ๊ถ ๋๋ด๊ธฐ ๋ชฉํ


