๊ฒ์๊ธ์ ์ด๋ฏธ์ง๋ฅผ ์ฒจ๋ถํ์ฌ ์์ฑํ๋ ๊ธฐ๋ฅ์ ๊ตฌํํ๊ณ ์ Controller์์ @RequestBody๋ก Dto๋ฅผ ๋ฐ๊ณ , @RequestPart๋ก ์ด๋ฏธ์ง ํ์ผ์ ๋ฐ๊ณ ์ ํ๋ ์ํฉ์ด์๋ค. Postman์์ ํด๋น API๋ฅผ ํ ์คํธํ๋๋ฐ ๋ค์๊ณผ ๊ฐ์ ์ค๋ฅ๊ฐ ๋ฐ์ํ์๋ค.์ด ๊ฒฝ์ฐ,
์ค๋๋ง์ ํ๊ณ ๋ฅผ ์ฐ๋ ๊ฒ ๊ฐ๋ค. ํ๊ธฐ ์ค์๋ ์ข ๊ฐํ๊ธธ ๋ฌด์ฒ์ด๋ ๊ธฐ๋ค๋ ค์์๋๋ฐ ๊ทธ๋์ ๊ทธ๋ฐ์ง ์์ฆ ๋๋ฌด ํ๋ณตํ ๋๋ ์ ๋ณด๋ด๊ณ ์๋ค.๋ฒ์จ ์ข ๊ฐํ์ง 3์ฃผ๋ ์ง๋ฌ๋ค. ํ์ ๊ถ๊ธํ๋ ๊ฒ๋ค์ด๋ ์ข ๋ ๋ณด์ํ ์ ์ ์ฑ์ฐ๊ธฐ ์ํด ๋จธ๋ฆฟ์์ ์ง์์ ์์๊ฐ๋ฉฐ ์๊ฐ์ ๋ณด๋ด๊ณค ํ๋ค.
๋ก์ปฌ ํ๊ฒฝ M1 Macbook Pro 13' Docker, docker-compose DBeaver MySQL 8.0 ์ผ๋ฐ์ ์ธ docker ๋ช ๋ น์ด ์ฌ์ฉ ์ docker-compose.yml ์ฌ์ฉ ์ ์ํ๋ ๋๋ ํ ๋ฆฌ์ docker-compose.yml ํ์ผ์ ์์ฑ ํ ๋ค ๋ค์๊ณผ ๊ฐ์ด ์ค์ ํด์ค๋ค. ์ด ํ ๋ค์ ๋ช ๋ น์ด๋ฅผ ์คํํด์ค๋ค. ์์ docker-co...
ํฌ์ธํธ์ปท(PointCut): ์ด๋์ ๋ถ๊ฐ ๊ธฐ๋ฅ์ ์ ์ฉํ ์ง, ์ด๋์ ๋ถ๊ฐ ๊ธฐ๋ฅ์ ์ ์ฉํ์ง ์์์ง ํ๋จํ๋ ํํฐ๋ง ๋ก์ง์ด๋ค. ์ฃผ๋ก ํด๋์ค์ ๋ฉ์๋ ์ด๋ฆ์ผ๋ก ํํฐ๋งํ๋ค. ์ด๋ค ํฌ์ธํธ(Point)์ ๊ธฐ๋ฅ์ ์ ์ฉํ ์ง ํ์ง ์์์ง ์๋ผ์(cut)
์ธํฐํ์ด์ค๊ฐ ์๋ ๊ฒฝ์ฐ JDK ๋์ ํ๋ก์๋ฅผ ์ ์ฉํ๊ณ , ๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ CGLIB๋ฅผ ์ ์ฉํ๋ ค๋ฉด ์ด๋ป๊ฒ ํด์ผํ ๊น? > ์คํ๋ง์ ์ ์ฌํ ๊ตฌ์ฒด์ ์ธ ๊ธฐ์ ๋ค์ด ์์ ๋, ๊ทธ๊ฒ๋ค์ ํตํฉํด์ ์ผ๊ด์ฑ ์๊ฒ ์ ๊ทผํ ์ ์๊ณ , ๋์ฑ ํธ๋ฆฌํ๊ฒ ์ฌ์ฉํ ์ ์๋ ์ถ์ํ
ํ๋ก์๋ฅผ ์ฌ์ฉํด์ ๊ธฐ์กด ์ฝ๋๋ฅผ ๋ณ๊ฒฝํ์ง ์๊ณ , ๋ก๊ทธ ์ถ์ ๊ธฐ๋ผ๋ ๋ถ๊ฐ ๊ธฐ๋ฅ์ ์ ์ฉํ ์ ์์๋ค. ๋ฌธ์ ๋ ๋์ ํด๋์ค ์ ๋งํผ ๋ก๊ทธ ์ถ์ ์ ์ํ ํ๋ก์ ํด๋์ค๋ฅผ ๋ง๋ค์ด์ผ ํ๋ค๋ ์ ์ด๋ค.
์ด์ ํฌ์คํ ์ ์ ๋ฆฌํ๋ ํ๋ก์ ํจํด์ ์ค์ ๋ก๊ทธ ์ถ์ ๊ธฐ์ ์ ์ฉํด๋ณด๋ ค ํ๋ค.
GoF ๋์์ธ ํจํด์์ ํ๋ก์๋ฅผ ์ฌ์ฉํ๋ ํจํด์ธ ํ๋ก์ ํจํด๊ณผ ๋ฐ์ฝ๋ ์ดํฐ ํจํด์ ์๋์ ๋ฐ๋ผ ๊ตฌ๋ถํ๋ค. ํ๋ก์ ํจํด: ์ ๊ทผ ์ ์ด๊ฐ ๋ชฉ์ ๋ฐ์ฝ๋ ์ดํฐ ํจํด: ์๋ก์ด ๊ธฐ๋ฅ ์ถ๊ฐ๊ฐ ๋ชฉ์ ๋ ๋ค ํ๋ก์๋ฅผ ์ฌ์ฉํ์ง๋ง, ์๋๊ฐ ๋ค๋ฅด๋ค๋ ์ ์ด ํต์ฌ์ด๋ค.
์ ๋ต ํจํด์ ํ์ตํ ๋ ๋ณด์๋ ๊ฒ ์ฒ๋ผ, ์ ํ๋ฆฌ์ผ์ด์ ์์กด ๊ด๊ณ๋ฅผ ์ค์ ํ๋ฏ ์ ์กฐ๋ฆฝ, ํ ์คํ์ ์ํ๋ ๊ฒ์ด ์๋๋ค. ๋ณํ๋ ๋ถ๋ถ๊ณผ ๋ณํ์ง ์๋ ๋ถ๋ถ์ ๋ถ๋ฆฌํ๋ ๊ฒ์ด ๋ชฉํ์ด๊ณ ์ด๋ฅผ ์ํด ์ฝ๋๋ฅผ ์คํํ ๋ ๋ณํ์ง ์๋ ํ ํ๋ฆฟ์ด ์๊ณ , ๊ทธ ํ ํ๋ฆฟ ์์์ ์ํ๋ ๋ถ๋ถ๋ง ์ด์ง
"๋์ผ ๊ณ์ด์ ์๊ณ ๋ฆฌ์ฆ๊ตฐ์ ์ ์ํ๊ณ ๊ฐ๊ฐ์ ์บก์ํํ์ฌ ์ํธ ๊ตํ ๊ฐ๋ฅํ๊ฒ ๋ง๋ค์. ์ ๋ต์ ์ฌ์ฉํ๋ฉด ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ๋ ํด๋ผ์ด์ธํธ์ ๋ ๋ฆฝ์ ์ผ๋ก ์๊ณ ๋ฆฌ์ฆ์ ๋ณ๊ฒฝํ ์ ์๋ค." [GoF์ ๋์์ธ ํจํด ไธญ]
"์์ ์์ ์๊ณ ๋ฆฌ์ฆ์ ๊ณจ๊ฒฉ์ ์ ์ํ๊ณ ์ผ๋ถ ๋จ๊ณ๋ฅผ ํ์ ํด๋์ค๋ก ์ฐ๊ธฐํฉ๋๋ค. ํ ํ๋ฆฟ ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ฉด ํ์ ํด๋์ค๊ฐ ์๊ณ ๋ฆฌ์ฆ์ ๊ตฌ์กฐ๋ฅผ ๋ณ๊ฒฝํ์ง ์๊ณ ๋ ์๊ณ ๋ฆฌ์ฆ์ ํน์ ๋จ๊ณ๋ฅผ ์ฌ์ ์ํ ์ ์์ต๋๋ค." [GoF์ ๋์์ธ ํจํด ไธญ]
์ฑ๊ธํค์ผ๋ก ๋ฑ๋ก๋ ์คํ๋ง ๋น์ ํด๋น ๊ฐ์ฒด์ ์ธ์คํด์ค๊ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฑ 1๊ฐ๋ง ์กด์ฌํ๋ค. ์ด๋ฌํ ์ธ์คํด์ค์ ์ฌ๋ฌ ์ฐ๋ ๋๊ฐ ๋์์ ์ ๊ทผํ๋ฉด ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค. ์ด๋ฌํ ๋ฌธ์ ๋ฅผ ๋์์ฑ ๋ฌธ์ ๋ผ ํ๋ค.
HTML Form์ ํตํ ํ์ผ ์ ๋ก๋๋ฅผ ์ดํดํ๋ ค๋ฉด ๋จผ์ ํผ์ ์ ์กํ๋ ๋ค์ ๋ ๊ฐ์ง ๋ฐฉ์์ ์ฐจ์ด๋ฅผ ์ดํดํด์ผ ํ๋ค. application/x-www-form-urlencoded, multipart/form-data
์ด๋ฒ ์ฃผ ์บก์คํค๋์์ธ ์ค๊ฐ ๋ฐ๋ชจ ๋ฐํ ๋ชฉ์ ์ผ๋ก ํ์ด ์ํํ ์น ์๋น์ค๋ฅผ ์ ์๋๋ง ์์ฐํ๊ณ ์ ํ๋ค. ๋ฐฑ์๋๋ฅผ ๋งก์ ๋ด๊ฐ ๋ฐฐํฌ ๊ณผ์ ์์ ๊ฒช์๋ ๋ฌธ์ ๋ค๊ณผ ์ด์ ๋ํ ํด๊ฒฐ ๊ณผ์ ์ ๊ธฐ๋กํ๋ฉฐ ์ถ ํ ์์ ์ ๊ฐ์ ํด์ผ ํ ์ ์ ์๊ฐํ๊ณ ์ ํ๋ค.
๋งค๋ฒ ๋ฐฉํ๋๋ฉด ์๊ฐ์ด ๋๋ฌด ์์๊ฐ์ด๋ค. ๋๊ตฌํํ ๋ณด์ฌ์ฃผ๋ ค๊ณ ์์ฑํ๋ ๊ฒ์ ๋น์ฐํ ์๋๊ณ , ์์ผ๋ก ๋์๊ฐ๊ธฐ ์ํ ๋ฐ์ฑ๋ฌธ์ด๋ผ ์๊ฐํ๊ณ ํ ๋ฒ์ฉ ํ๊ณ ๋ฅผ ์์ฑํ๊ธด ํ์๋๋ฐ, ์ฌํด๋ ๋ถ๊ธฐ๋ณ๋ก ํ๊ณ ๋ฅผ ์์ฑํด๋ณด๋ ค๊ณ ๋ช์ ๋์ ์ฌ๋ณด์๋ค.
2022 ๋ดํ๊ธฐ ์ฐํ์บก์คํค๋์์ธ ๊ฐ๋ฐ๊ธฐ๋ก(2)
2022 ๋ดํ๊ธฐ ์ฐํ์บก์คํค๋์์ธ ๊ฐ๋ฐ๊ธฐ๋ก(1)
์ต๋ํ ๋จ์ํ๊ฒ ๋ฌธ์ ์์ ์ฃผ์ด์ง ๊ท์น์ ๋ง์ถ๋ ค๊ณ ํด๋ณด์.๋ณด๋ํ ์์ ์ฌ๊ณผ๋ 1, ๋ฑ์ด ์์นํ ๊ณณ์ 2, ๋๋จธ์ง๋ 0์ผ๋ก ์๊ฐํ๊ณ ์ ๊ทผํ์.๋ฑ์ ๋ชธ ๊ธธ์ด์ ๊ดํ ๋ด์ฉ์ ํ์ฌ ์์น์ ๋ค์ ์์น๋ฅผ 2๋ก ๋ง๋ค๊ณ ์ฃผ์ด์ง ์กฐ๊ฑด์ ๋ฐ๋ผ ํ์ฌ ์์น๋ฅผ 0์ผ๋ก ๋ฐ๊ฟ์ง, ๊ทธ๋๋ก ๋๊ณ ๋ค์
build.gradle๋ ๋ค์๊ณผ ๊ฐ๋ค.๋น๋ฐ๋ฒํธ๋ฅผ ์์ ํ๊ฒ ์ํธํ ํ๋๋ก ์ ๊ณตํ๋ ๊ธฐ๋ฅ์ด๋ค.Spring Security 5.0 ์ด์ ์๋ ๊ธฐ๋ณธ PasswordEncoder๊ฐ ํ๋ฌธ์ ์ง์ํ๋ NoOpPasswordEncoder(ํ์ฌ๋ Deprecated ๋จ) ์๋ค.์์ฑPas
10026๋ฒ: ์ ๋ก์์ฝBFS ์ฝ๋ ํ์ ์๊ณ ์์ผ๋ฉด ์ฝ๊ฒ ํ ์ ์๋ ์ ํ์ ์ธ BFS ๋ฌธ์ ์ด๋ค.ํ์ฌ ์ขํ์ ๋ค์ ์ขํ์ ์์์ด ๊ฐ์ผ๋ฉด ์ด๋ํ๋ ๋ฐฉ์์ผ๋ก ํ์ํ๋ค.2์ค for๋ฌธ์ผ๋ก ๋ฐฉ๋ฌธํ์ง ์์ ์ขํ์ธ์ง ํ์ ํด์ ํด๋น ์ขํ์์ BFS๋ฅผ ํธ์ถํ๋ค. ์ด ๋ ์นด์ดํ ์ ํ๋ค.