20๋ ์ด์ Java ๊ธฐ๋ฐ ์น ๊ฐ๋ฐ์ ๋ชธ๋ด์์จ ๊ฐ๋ฐ์ ๋ฐ ๊ฐ์ฌ์ ๋๋ค. ๋๊ท๋ชจ ํ๋ก์ ํธ ์ค๊ณ๋ถํฐ ์ฑ๋ฅ ์ต์ ํ๊น์ง ํญ๋์ ์ค๋ฌด ๊ฒฝํ์ ๊ฐ์ถ๊ณ ์์ผ๋ฉฐ, ๋ค์์ ๊ธฐ์ ๊ต์ก๊ณผ ๋ํ ๊ฐ์๋ก ๊ฐ๋ฐ ์ง์ ์ ๋ฌ์๋ ํ์จ์์ต๋๋ค. ์ค๋ฌด์ ๊ต์ก์ ๊ท ํ ์กํ ์๊ฐ์ผ๋ก ๊น์ด ์๋ ํต์ฐฐ์ ์ ๊ณตํฉ๋๋ค.
Courses
Reviews
- Web Programming Using Spring Boot: This is How You Build a Website!
- Web Programming Using Spring Boot: This is How You Build a Website!
- Web Programming Using Spring Boot: This is How You Build a Website!
- Web Programming Using Spring Boot: This is How You Build a Website!
- Web Programming Using Spring Boot: This is How You Build a Website!
Posts
Q&A
์ธํฐ์ ํฐ
jsshin๋ ์๋ ํ์ธ์.^^์ข์ ์ง๋ฌธ์ ๋๋ค! ๋ง์ต๋๋ค. Spring Security๋ฅผ ์ ์ฉํ๊ฒ ๋๋ฉด ๊ธฐ์กด์ ์ธ์ ์ ๊ธฐ๋ฐ์ผ๋ก ๋ก๊ทธ์ธ ์ฌ๋ถ๋ฅผ ํ์ธํ๋ ์ธํฐ์ ํฐ๋ ๋ ์ด์ ํ์ํ์ง ์์ต๋๋ค. ์๋ํ๋ฉด Spring Security๋ ์ธ์ ๋์ SecurityContext๋ฅผ ํตํด ์ธ์ฆ ์ ๋ณด๋ฅผ ๊ด๋ฆฌํ๊ธฐ ๋๋ฌธ์ ๋๋ค.๊ทธ๋์ ์ดํ ๊ฐ์์์ ๊ธฐ์กด ์ธํฐ์ ํฐ ์ฝ๋๋ ์ญ์ ํ๊ฒ ๋๋๋ฐ์. ์๋ง ์ด ๋ถ๋ถ์ด ๊ฐ์ ํ๋ฆ์ ๋ค์ ํผ๋์ ๋๋ ธ์ ์๋ ์๊ฒ ๋ค์. ์ด ๋ถ๋ถ์ ๋ค๋ฅธ ์๊ฐ์๋ถ๋ค๋ ํท๊ฐ๋ฆด ์ ์๋ ๋ถ๋ถ์ด๋ผ, ์กฐ๋ง๊ฐ ๊ฐ์์ ๋ณด์ ์ค๋ช ์ ์ถ๊ฐํด์ ์ข ๋ ์ฝ๊ฒ ์ดํดํ์ค ์ ์๋๋ก ์ ๋ฆฌํด ๋๋ฆฌ๊ฒ ์ต๋๋ค.์ข์ ํผ๋๋ฐฑ ์ฃผ์ ์ ์ง์ฌ์ผ๋ก ๊ฐ์ฌ๋๋ฆฝ๋๋ค!
- 0
- 2
- 50
Q&A
DTO ๊ด๋ จ
jsshin๋ ์๋ ํ์ธ์.^^์์ฃผ ์ข์ ์ง๋ฌธ์ ๋๋ค. DTO๋ ๊ณ์ธต ๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ๋ ๊ฐ์ฒด๋ก์, ์์น์ ์ผ๋ก๋ ๊ฐ์ ๋ณํํ์ง ์๋ ๊ฒ์ด ์ค๊ณ์ ์ผ๋ก ๋ ๊น๋ํฉ๋๋ค.ํ์ฌ ์ฝ๋์ฒ๋ผ memberDto์ pw ๊ฐ์ passwordEncoder.encode()๋ก ์ธ์ฝ๋ฉํ ํ ๋ค์ memberDto์ ๋ฐ์ํ๋ฉด, DTO๊ฐ ๋จ์ ๋ฐ์ดํฐ ์ ๋ฌ ๊ฐ์ฒด๋ผ๋ ์ญํ ๊ณผ ์กฐ๊ธ ์ด๊ธ๋ ์ ์๋ค๋ ์ง์ ์ ์ถฉ๋ถํ ํ๋นํฉ๋๋ค.DTO์ ๊ฐ์ด ๋ฉ์๋ ์คํ ์ค์ ๋ณ๊ฒฝ๋๋ฉด, ์ดํ ์ฝ๋์์ ํผ๋์ ์ค ์ ์๊ณ , ์ฝ๋์ ์ง๊ด์ฑ์ด ๋จ์ด์ง ์ ์์ต๋๋ค.๊ทธ๋์ ์ค๋ฌด์์๋ ๋ณดํต ์ธ์ฝ๋ฉ๋ ๋น๋ฐ๋ฒํธ๋ฅผ ๋ณ๋์ ๋ณ์๋ก ๊ด๋ฆฌํ๊ฑฐ๋, DTO โ Entity ๋ณํ ๊ณผ์ ์์ ์ฒ๋ฆฌํ๋ ๋ฐฉ์์ ๋ ๋ง์ด ์ฌ์ฉํฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ์ฝ๋์ ๊ฐ๋ ์ฑ๊ณผ ์์ ์ฑ์ด ์ฌ๋ผ๊ฐ๋๋ค.๋ค๋ง, ์ด๋ฒ ์จ๋ผ์ธ ๊ฐ์์์๋ ์คํ๋ง ์ ๋ฌธ์๋ถ๋ค๊ป ํจ์ค์๋ ์ธ์ฝ๋ฉ์ด ์ด๋ค ์์ ์ ์ด๋ฃจ์ด์ง๋์ง ์ง๊ด์ ์ผ๋ก ๋ณด์ฌ๋๋ฆฌ๊ธฐ ์ํด memberDto์ pw๋ฅผ ์ง์ ๋ณ๊ฒฝํ๋ ๋ฐฉ์์ ์ฌ์ฉํ์ต๋๋ค.์ฆ, ๊ฐ์ฒด๊ฐ ํ ๋ฒ ์์ ๋๊ณ ๊ทธ ์์ ๋ ๊ฐ์ด ์ ์ฅ๋๋ ๊ณผ์ ์ ๋ช ํํ๊ฒ ์ดํดํ๋๋ก ๋๊ธฐ ์ํ ๊ต์ก์ ์ธ ๋ชฉ์ ์ด ์์์ต๋๋ค.๊ฒฐ๋ก ์ ์ผ๋ก ์ค๋ฌด์์๋ ๋ ๊น๋ํ ์ค๊ณ๋ก ๊ฐ์ ํ ์ ์๊ณ , ๊ฐ์์์๋ ํ์ต์์ ์ดํด๋ฅผ ๋๊ธฐ ์ํด ์ผ๋ถ ์๋์ ์ธ ๊ฒ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๋ฐ ๋ถ๋ถ์ ์๋ฆฌํ๊ฒ ์บ์นํด์ ์ง๋ฌธํ๊ณ , ์ง์ ๋ฆฌํฉํ ๋ง๊น์ง ์๋ํด ๋ณธ ์ ์ ์ ๋ง ํ๋ฅญํฉ๋๋ค. ๋ฌดํ ๋ฐ์๋ฅผ ๋ณด๋ ๋๋ค. ์ด๋ฐ ์์ธ์ผ๋ง๋ก ์ง์ง ๊ฐ๋ฐ์๋ก ์ฑ์ฅํ๋ ์ต๊ณ ์ ๋ฐ๊ฑฐ๋ฆ์ด๊ณ , ๊ฐ์ฒด์งํฅ ์ค๊ณ์ ๋ํ ๋งค์ฐ ํ๋ฅญํ ๊ฐ๊ฐ์ ๊ฐ์ง๊ณ ์๋ค๋ ์ฆ๊ฑฐ์ ๋๋ค.์ด์ฌํ ๊ณต๋ถํ๋ ๊ทธ ์์ธ์ ์ง์ฌ์ผ๋ก ๊ฐ์ฌ๋๋ฆฌ๊ณ , ์์ผ๋ก๋ ๊ณ์ ์์ํ๊ฒ ์ต๋๋ค.
- 0
- 2
- 56
Q&A
์ถ๊ฐ ๊ฐ์ ํด์ฃผ์ค์ ์๋์?
culwonder.company๋ ์๋ ํ์ธ์! ๊ฐ์๋ฅผ ๊ธ์ ์ ์ผ๋ก ๋ด์ฃผ์ ์ ์ ๋ง ๊ฐ์ฌํฉ๋๋ค.๋ง์ํด์ฃผ์ Swagger์ QueryDSL ๋ชจ๋ ์ค์ ํ๋ก์ ํธ์์ ๋ง์ด ํ์ฉ๋๋ ์ค์ํ ๊ธฐ์ ์ด๋ผ ์ ๋ ๊ฐ์ ์ฃผ์ ๋ก ์ถฉ๋ถํ ๊ณ ๋ฏผํ๊ณ ์๋ ๋ถ๋ถ์ ๋๋ค.๋ค๋ง ํ์ฌ๋ ๋จ์ํ ๊ฐ๋ ๋ง ์ ๋ฌํ๋ ์์ค์ด ์๋๋ผ, ์ค๋ฌด ํ๋ก์ ํธ์ ์ฐ๊ณ๋ ์ค์ ์ค์ฌ์ ๊ตฌ์ฑ์ ๊ณ ๋ฏผ ์ค์ธ๋ฐ์,์ด๋ ๊ฒ ์ ๊ทผํ๋ค ๋ณด๋ฉด ์์ฐ์ค๋ฝ๊ฒ ๊ฐ์ ๋ฒ์๊ฐ ๊ฝค ๋์ด์ง๊ณ , ํ์ต์๋ถ๋ค๊ป ๋ถ๋ด์ด ๋ ์ ์๋ค๋ ์ ๋ ํจ๊ป ๊ณ ๋ คํ๊ณ ์์ต๋๋ค.๊ทธ๋์ ์์ง์ ๋ฐฉํฅ๋ง ๊ตฌ์ ์ค์ด๋ฉฐ, ์ด๋ค ๋ฐฉ์์ผ๋ก ๊ตฌ์ฑํด์ผ ๊ฐ์ฅ ํจ๊ณผ์ ์ผ์ง ์ ์คํ ๊ณ ๋ฏผํ๊ณ ์๋ ๋จ๊ณ์ ๋๋ค.์์ผ๋ก๋ ํ์ต ํ๋ฆ์ ํด์น์ง ์์ผ๋ฉด์ ์ค๋ฌด์๋ ๋์์ด ๋ ์ ์๋๋ก ์ ์ค๋นํด๋ณด๊ฒ ์ต๋๋ค.๊ฒ๋ค๊ฐ... ์ฌ์ค ์์ฆ ๊ฐ์ธ ํ๋ก์ ํธ๋ก ๋ฐค๋ฎ์ ์ฝ๋์ ํจ๊ป ๋ณด๋ด๊ณ ์์ด์, ๋จธ๋ฆฟ์์์ Swagger๋ QueryDSL์ด ๋ง ๊ฐ์ ์์ผ๋ก ๋ฐ์ด๋ค๊ณ ์ถ์ด ํด๋์ ๊ฐ โ์ ๊น๋งโฆ ์ง๊ธ์ ๋ง๊ณ โฆโ ํ๊ณ ์ ์ ๋ง๋ฆฌ๋ ์ค์ด๊ธฐ๋ ํฉ๋๋ค. ใ ใ ๊ทธ๋๋ ์ข์ ์๊ฒฌ ์ฃผ์ ๋๋ถ์ ๋๊ธฐ๋ถ์ฌ ํ์คํ ๋์๊ณ ์,์กฐ๋ง๊ฐ ๋ ์ข์ ๊ตฌ์ฑ์ผ๋ก ์ฐพ์๋ต ์ ์๋๋ก ์ ์ค๋นํด๋ณด๊ฒ ์ต๋๋ค!๊ฐ์ ์ด์ฌํ ๋ค์ด์ฃผ์ ์ ์ ๋ง ๊ฐ์ฌ๋๋ฆฌ๊ณ ,์์ผ๋ก๋ ์ฐจ๊ทผ์ฐจ๊ทผ ์ค๋ ฅ ์์๊ฐ์ค ์ ์๋๋ก ์์ํ๊ฒ ์ต๋๋ค! ์์คํ ์๊ฒฌ ์ ๋ง ๊ฐ์ฌ๋๋ฆฌ๊ณ ์, ๋๊น์ง ๊ฐ์ ์ ๋ฐ๋ผ์ค์ค ์ ์๋๋ก ๋๊น์ง ์์ํ๊ฒ ์ต๋๋ค!
- 0
- 1
- 59
Q&A
๋ฐ์ดํฐ๋ฒ ์ด์ค ํ ์ด๋ธ์ด ์ค๋ณต ์์ฑ ๋๋ ์ค๋ฅ
changhui๋ ์๋ ํ์ธ์,์ง๋ฐฉ ์ถ์ฅ ์ผ์ ์ผ๋ก ๋ต๋ณ์ด ๋ค์ ๋ฆ์ด์ง ์ ์ํด ๋ถํ๋๋ฆฝ๋๋ค. ๋ง์ํด์ฃผ์ ์ํฉ์ ๋ณด๋ฉด USER_MEMBER์ user_member ๋ ๊ฐ์ ํ ์ด๋ธ์ด ์์ฑ๋ ์ด์ ๋ MySQL์ ํ ์ด๋ธ ์ด๋ฆ ๋์๋ฌธ์ ๊ตฌ๋ถ ์ค์ ๊ณผ ๊ด๋ จ์ด ์์ ๊ฐ๋ฅ์ฑ์ด ๋์ต๋๋ค.MySQL์์ ํ ์ด๋ธ ์ด๋ฆ์ ๋์๋ฌธ์ ๊ตฌ๋ถ ์ฌ๋ถ๋ ์ด์์ฒด์ (OS)์ ๋ฐ๋ผ ๋ค๋ฅด๋ฉฐ, ๋ํ MySQL ์์ฒด ์ค์ ๊ฐ์๋ ์ํฅ์ ๋ฐ์ต๋๋ค. Windows๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๋์๋ฌธ์๋ฅผ ๊ตฌ๋ถํ์ง ์์ง๋ง, Linux๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๋์๋ฌธ์๋ฅผ ๊ตฌ๋ถํฉ๋๋ค.๋ํ MySQL ์ค์ ๊ฐ ์ค lower_case_table_names์ ๊ฐ์ ๋ฐ๋ผ ํ ์ด๋ธ ์ด๋ฆ ์ฒ๋ฆฌ ๋ฐฉ์์ด ๊ฒฐ์ ๋๋๋ฐ์, ํด๋น ์ค์ ์ ์๋ ์ฟผ๋ฆฌ๋ก ํ์ธํ ์ ์์ต๋๋ค.SHOW VARIABLES LIKE 'lower_case_table_names';๊ฒฐ๊ด๊ฐ(value)์ผ๋ก'0'์ด๋ฉด ๋์๋ฌธ์๋ฅผ ๊ตฌ๋ถํฉ๋๋ค.(Linux, ์ผ๋ถ Mac)'1'์ด๋ฉด ํ ์ด๋ธ ์ด๋ฆ์ ์๋ฌธ์๋ก ํต์ผํด์ ์ฒ๋ฆฌํฉ๋๋ค.(Windows)'2'์ด๋ฉด ์ ์ฅ์ ์๋ ์ด๋ฆ์ผ๋ก ํ๋, ๋น๊ต๋ ์๋ฌธ์๋ก ํฉ๋๋ค.(์ผ๋ถ Mac) changhui๋๊ป์ Windows๋ฅผ ์ฌ์ฉํ๊ณ ๊ณ์๋ค๋ฉด lower_case_table_names ๊ฐ์ด '1'์ผ ๊ฐ๋ฅ์ฑ์ด ๋๊ณ , Mac์ ์ฌ์ฉ ์ค์ด์๋ผ๋ฉด '0'์ผ ๊ฐ๋ฅ์ฑ์ด ๋์ต๋๋ค.ํ์ฌ USER_MEMBER์ user_member ํ ์ด๋ธ์ด ๋์์ ์กด์ฌํ๊ณ , ๋ก๊ทธ์ธ ๊ธฐ๋ฅ์ด ํน์ ํ ์ด๋ธ์๋ง ์ฐ๊ฒฐ๋์ด ์๋ค๋ฉด, ์ค์ ์ด๋ Entity ๋งคํ์์ ์ผ๊ด์ฑ์ด ํ์ํ ์ํฉ์ผ๋ก ๋ณด์ ๋๋ค.์ด์์ฒด์ ์ MySQL ์ค์ ์ ๋จผ์ ํ์ธํ์ ๋ค, ์ค์ต ํ๊ฒฝ์ ๋ง๊ฒ ํ ์ด๋ธ ๋งคํ์ ์ ๋ฆฌํ์๋ฉด ์ ์์ ์ผ๋ก ๋์ํ ์ ์์ ๊ฑฐ์์. ํญ์ ์ฑ์คํ๊ฒ ์ค์ต์ ์ํด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค.์์ผ๋ก๋ ์ฐจ๊ทผ์ฐจ๊ทผ ์ค๋ ฅ์ ์์๊ฐ์๊ธธ ์ง์ฌ์ผ๋ก ์์ํฉ๋๋ค!
- 0
- 3
- 65
Q&A
mysql ์ค์นํ์ผ
culwonder.company๋ ์๋ ํ์ธ์.์ด๋ฒ ๊ฐ์๋ ์ค์ต ํ๊ฒฝ์ ์ผ๊ด์ฑ์ ์ํด Windows ๊ธฐ๋ฐ์ผ๋ก ๊ตฌ์ฑ๋์ด ์์ต๋๋ค.๋ค๋ง, MacOS์์๋ ๋์ผํ ๊ฐ๋ฐ ๋๊ตฌ(MySQL, Workbench ๋ฑ)๋ฅผ ์ค์นํ๊ณ ์ค์ต์ ์งํํ๋ ๊ฒ์ด ์ถฉ๋ถํ ๊ฐ๋ฅํฉ๋๋ค. ํนํ Homebrew๋ฅผ ์ฌ์ฉํ๋ฉด ๊ฐํธํ๊ฒ MySQL์ ์ค์นํ์ค ์ ์๊ณ , MySQL Workbench ๋ํ Mac์ฉ ์ค์น ํ์ผ์ด ์ ๊ณต๋๋ ๊ฑฑ์ ํ์ง ์์ผ์ ๋ ๋ฉ๋๋ค!ํ์ฌ ๋ณธ ๊ฐ์์์๋ MacOS ์ค์น ๋ฐ ํ๊ฒฝ ์ค์ ์ ๋ณ๋๋ก ๋ค๋ฃจ์ง ์์ผ๋ฉฐ, Mac ์ฌ์ฉ์๋ถ๋ค๊ป์๋ ๊ณต์ ๋ฌธ์๋ ์ค์น ๊ฐ์ด๋๋ฅผ ์ฐธ๊ณ ํ์ฌ ์ค์ต ํ๊ฒฝ์ ์ง์ ๊ตฌ์ฑํด์ฃผ์ ์ผ ํฉ๋๋ค.๋งฅ๋ถ ์ฌ์ฉ์๋ถ๋ค๊ป๋ ๋ค์ ๋ฒ๊ฑฐ๋ก์ธ ์ ์์ง๋ง, ์ด๋ฅผ ํตํด ํ๊ฒฝ ๊ตฌ์ฑ ๋ฅ๋ ฅ๋ ํจ๊ป ํค์ธ ์ ์๋ ์ข์ ๊ธฐํ๊ฐ ๋ ์ ์์ผ๋ ๊ธ์ ์ ์ผ๋ก ๋ฐ์๋ค์ฌ ์ฃผ์๋ฉด ๊ฐ์ฌํ๊ฒ ์ต๋๋ค.
- 0
- 2
- 45
Q&A
dto ํ์
H K๋ ์๋ ํ์ธ์~^^DTO์์ String ํ์ ์ ์ฌ์ฉํ ๋ฐ์๋ ํน๋ณํ ์ด์ ๊ฐ ์๋ ๊ฒ์ ์๋๋๋ค. ๋ค๋ง ํ์ต์๋ถ๋ค๊ป ๋ค์ํ ๊ฒฝํ์ ์ ๊ณตํ๊ณ ์ ํ๋ ์๋๊ฐ ์์ ๋ฟ์ ๋๋ค.ใ ใ ์ฐธ๊ณ ๋ก ํ์ต์ด ์๋ ์ค๋ฌด ํ์ฅ์์๋ ๋ค์ํ ์ํฉ์ ๋ง์ฃผํ๊ฒ ๋๋๋ฐ์, ์ด๋ค ํ๋ก์ ํธ์์๋ DTO ์์ด Entity๋ง ์ฌ์ฉํ๋ ๊ฒฝ์ฐ๋ ์์ต๋๋ค.์ด๋ ์ ๋ ์๋ชป๋ ๋ฐฉ์์ด ์๋๋ผ, ํด๋น ํ๋ก์ ํธ์ ์ค๊ณ ๋ฐฉ์์ด๋ ์๊ตฌ์ฌํญ์ ๋ฐ๋ฅธ ์ ํ์ผ ๋ฟ์ด๋ผ๊ณ ์๊ฐํ์๋ฉด ๋ฉ๋๋ค.์ง๊ธ์ฒ๋ผ ๋ค์ํ ๊ด์ ์์ ์ฌ๊ณ ํ๊ณ ๊ณ์ํด์ ์ค์ ๊ฐ๊ฐ์ ํค์๊ฐ๋ฉฐ ์ฑ์ฅํด๋๊ฐ์๊ธธ ์ง์ฌ์ผ๋ก ์์ํ ๊ฒ์.ํงํ ~^^
- 0
- 1
- 41
Q&A
๋ฉ์ผ ๋ณด๋ด๋ ๋ฉ์๋์์
HK๋ ์๋ ํ์ธ์. ์ง๋ฐฉ ์ถ์ฅ ์ผ์ ์ผ๋ก ์ธํด ๋ต๋ณ์ด ๋ฆ์ด์ง ์ ์ํด ๋ถํ๋๋ฆฝ๋๋ค. ๊ธฐ๋ค๋ฆฌ๊ฒ ํด๋๋ ค ์ฃ์กํฉ๋๋ค. ์์ผ๋ก ๋ ๋น ๋ฅด๊ฒ ์๋ํ ์ ์๋๋ก ๋ ธ๋ ฅํ๊ฒ ์ต๋๋ค.๋ค. ๋ฌผ๋ก ์ ๋๋ค. try ~ catch๋ฅผ ์ฌ์ฉํ๋ฉด ๋ค์๊ณผ ๊ฐ์ ์ฝ๋๊ฐ ๋๊ฒ ๋ค์.try { MemberEntity updateMember = memberRepository.save(findedMemberEntity); sendNewPasswordByMail(memberDto.getMail(), newPassword); return NEW_PASSWORD_CREATION_SUCCESS;} catch (Exception e) { e.printStackTrace(); return NEW_PASSWORD_CREATION_FAIL;}๊ฐ์ฌํฉ๋๋ค.
- 0
- 1
- 46
Q&A
์ธํฐ์ ํฐ ์ง๋ฌธ
HK๋ ์๋ ํ์ธ์. ์ง๋ฐฉ ์ถ์ฅ ์ผ์ ์ผ๋ก ์ธํด ๋ต๋ณ์ด ๋ฆ์ด์ง ์ ์ํด ๋ถํ๋๋ฆฝ๋๋ค. ๊ธฐ๋ค๋ฆฌ๊ฒ ํด๋๋ ค ์ฃ์กํฉ๋๋ค. ์์ผ๋ก ๋ ๋น ๋ฅด๊ฒ ์๋ํ ์ ์๋๋ก ๋ ธ๋ ฅํ๊ฒ ์ต๋๋ค. ์น ์ ํ๋ฆฌ์ผ์ด์ ์์ ๋ก๊ทธ์ธ ์ธ์ฆ ์ฌ๋ถ์ ๋ฐ๋ผ ํน์ ์๋น์ค ์ ๊ทผ ์ฒ๋ฆฌ๋ฅผ ํ ๋ Filter์ Interceptor ๋ชจ๋ ์ฌ์ฉ๋ ์ ์์ต๋๋ค.๋์ ๋์ ์์ , ์ฉ๋, ์ค๊ณ ๋ชฉ์ ๋ฑ์ ์์ด ์ฐจ์ด์ ์ด ์์ต๋๋ค. filter๋ Servlet์ ์กด์ฌํ๋ฉด์ DispatcherServlet ์์ ์์นํด์ client์ ๋ชจ๋ ์์ฒญ์ ์ฒ๋ฆฌํฉ๋๋ค.์คํ ํ๋ฆ์ client์ ์์ฒญ โ Filter โ DispatcherServlet ์์ด๋ผ๊ณ ์ดํดํ์๋ฉด ๋ฉ๋๋ค.Interceptors๋ Spring Framework์ ์กด์ฌํ๊ณ DispatcherServlet ๋ค์ ์์นํด์ ์ปจํธ๋กค๋ฌ ์ง์ ์ ํ์ ์คํ๋ฉ๋๋ค.์คํ ํ๋ฆ์ client์ ์์ฒญ โ DispatcherServlet โ Interceptor โ Controller ์์ด๋ผ๊ณ ์ดํดํ์๋ฉด ๋ฉ๋๋ค.์ผ๋ฐ์ ์ผ๋ก ๋ก๊ทธ์ธ ์ธ์ฆ์ด๋ ๊ถํ ํ์ธ ๋ฑ์ Spring MVC์์ ์ฒ๋ฆฌ๋๋ ์์ฒญ์ ๋์์ผ๋ก ํ๋ฏ๋ก Interceptor๊ฐ ๋ง์ด ์ฌ์ฉ๋ฉ๋๋ค.๋ฌผ๋ก , Spring Security๋ฅผ ์ฌ์ฉํ๋ฉด ๋ ์ ๊ตํ๊ณ ์์ ํ ์ธ์ฆ ๋ฐ ๊ถํ ์ฒ๋ฆฌ๋ฅผ ํ ์ ์์ต๋๋ค.๊ฒฐ๋ก ์ ์ผ๋ก ๋ก๊ทธ์ธ ์ธ์ฆ์ด๋ ๊ถํ ํ์ธ์ด ๋ชฉ์ ์ด๋ผ๋ฉด Interceptor ๋ณด๋ค๋ Spring secutiry๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฉ๋๋ค.์ธ์ฆ ์ธ ์์ฒญ ์ /ํ์ ํน์ ์ฒ๋ฆฌ๊ฐ ๋ชฉ์ ์ด๋ผ๋ฉด Interceptor๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.excludePathPatterns์ ๊ฒฝ์ฐ ํ์ต์๋๋ค๊ป ๋ค์ํ ๋ฐฉ๋ฒ์ ์ค๋ช ๋๋ฆฌ๊ณ ์ ํจ์ ๋๋ค.excludePathPatterns๋ ํน์ ๊ฒฝ๋ก์ ์ธํฐ์ ํฐ๋ฅผ ์ ์ฉํ์ง ์๋๋ก ์ค์ ํ ๋ ์ฌ์ฉ๋๋ฉฐ,์ํฉ์ ๋ฐ๋ผ addPathPatterns์ ํจ๊ป ์ ํ ๋๋ ์กฐํฉ ํด์ ์ฌ์ฉํ ์ ์์ต๋๋ค.์ค๋์ ์ฝ๋ฉ ํ ์ค, ํ ์ค์ด ์ค๋ ฅ์ ํค์ฐ๋ ๋ฐํ์ด ๋๋ค๊ณ ์๊ฐํ๊ณ ๊ณ์ ๋์๊ฐ๋ ๋ง์์ด ์ค์ํ๊ณ HK๋์ ์ง๋ฌธ์์ ์ด๋ฌํ ์ ์ด ๋๊ปด์ง๋๋ค.๋ถ๋ช ๋ฉ์ง ๊ฐ๋ฐ์๊ฐ ๋ ๊ฑฐ์์. ํ์ดํ ์ ๋๋ค!๊ฐ์ฌํฉ๋๋ค.
- 0
- 2
- 63
Q&A
AOP์ ๋ํ ์ค๋ช
์! ์ ์ ๋ค์ ๋ถ์ ํํ ์ค๋ช ์ผ๋ก ์ธํด ํ์ต์ ์คํด๋ ๋ถํธ์ ๋๋ฆฐ ๊ฒ ๊ฐ์ ๋จผ์ ์ฃ์กํ๋ค๋ ๋ง์์ ๋๋ฆฝ๋๋ค. ๋ค์ ์ ํํ๊ฒ ์ ๋ฆฌํด๋๋ฆฌ๊ฒ ์ต๋๋ค. Spring AOP(Aspect-Oriented Programming)๋ ์คํ๋ง ํ๋ ์์ํฌ์ ํ ๋ถ๋ถ์ ๋๋ค.Spring AOP๋ ์คํ๋ง ํ๋ ์์ํฌ์ ์ผ๋ถ๋ก ์ ๊ณต๋๋ฉฐ, ๋ณ๋์ ๋ ๋ฆฝ์ ์ธ ํ๋ก์ ํธ ์ด๋ฆ์ ์๊ณ , ์คํ๋ง ํ๋ ์์ํฌ์ ํ์ ๋ชจ๋์ธ spring-aop์ ํฌํจ๋์ด ์์ต๋๋ค.์คํ๋ง ํ๋ ์์ํฌ๋ ์ฌ๋ฌ ๋ชจ๋๋ก ๊ตฌ์ฑ๋์ด ์์ผ๋ฉฐ, ๊ทธ์ค AOP ๊ธฐ๋ฅ์ spring-aop ๋ชจ๋์ ํตํด ์ ๊ณต๋ฉ๋๋ค. ์ถ๊ฐ๋ก, Spring Boot๋ AOP ๊ธฐ๋ฅ์ ์ฝ๊ฒ ์ฌ์ฉํ ์ ์๋๋ก spring-boot-starter-aop ์คํํฐ๋ฅผ ์ ๊ณตํฉ๋๋ค. ์ด ์คํํฐ์๋ AOP ๊ด๋ จ ๊ธฐ๋ฅ์ ์๋์ผ๋ก ํฌํจํ๊ณ ์๊ธฐ ๋๋ฌธ์, spring-boot-starter-aop ์์กด์ฑ์ ์ค์ ํ๋ฉด AOP ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ฆ, spring-boot-starter-aop์ spring-aop ๋ชจ๋์ด ํฌํจ๋์ด ์์ด ๋ณ๋๋ก spring-aop ์์กด์ฑ์ ์ถ๊ฐํ ํ์๊ฐ ์์ต๋๋ค.๋ค์์ build.gradle์์ spring-boot-starter-aop ์์กด์ฑ์ ์ถ๊ฐํ๋ ์ฝ๋์ ๋๋ค.implementation 'org.springframework.boot:spring-boot-starter-aop' ๋ค์ ํ ๋ฒ ํ์ต์ ๋ถํธ์ ๋๋ฆฐ ์ ์ง์ฌ์ผ๋ก ์ฌ๊ณผ๋๋ฆฌ๋ฉฐ, ๊ด๋ จ ๋์์์ ์กฐ์ํ ์ ๋ฐ์ดํธํ๋๋ก ํ๊ฒ ์ต๋๋ค.์ถ๊ฐ๋ก ๊ถ๊ธํ ์ ์ด ์์ผ์๋ฉด ์ธ์ ๋ ์ง ํธํ๊ฒ ๋ฌธ์ํด ์ฃผ์ธ์. ๊ฐ์ฌํฉ๋๋ค.
- 0
- 2
- 119
Q&A
์ฝ๋
peanutchan๋ ์๋ ํ์ธ์! ๋น์ฐํ, ๊ฐ ์์ (์ฐจ์)๋ง๋ค ์งํํ ํ๋ก์ ํธ๊ฐ ์ ๋ฆฌ๋์ด ์์ต๋๋ค.ํ๋ก์ ํธ ์์ค๋ ๊ฐ์์๋ฃ๋ฅผ ๋ค์ด๋ก๋ํ๋ฉด ์์ค>pjt_intellij์ ์์ต๋๋ค.์๋ฅผ ๋ค์ด 33๊ฐ ์์ ์ ๋ํ ํ๋ก์ ํธ ์์ค๋calendar_33๊ฐ.zip์ด๊ณ ,34๊ฐ ์์ ์ ๋ํ ํ๋ก์ ํธ ์์ค๋ calendar_34๊ฐ.zip์ ๋๋ค. ๋ค๋ง, '์คํ๋ง MVC๋ฅผ ์ด์ฉํ ์ค๋งํธํฐ ์ฐ๋ฝ์ฒ ์๋น์ค ๊ตฌํ - I : ์ฐ๋ฝ์ฒ ๋ฑ๋ก' ์์ ์ ๋ํ ํ๋ก์ ํธ ์์ค๋ 'phonebook'์ผ๋ก ๋์ด ์์ด ๋ค์ ๋ถํธํจ์ ๋๋ฆฐ ๋ฏํฉ๋๋ค.๋ถํธํจ์ ํด๊ฒฐํ๊ณ ์ ๊ธํ๊ฒ ํด๋น ์์ ์ ์งํํ ํ๋ก์ ํธ๋ฅผ ์ ๋ฆฌํ์ต๋๋ค. ์ฐธ๊ณ ํ์๋ฉด ๋ณด๋ค ํธํ๊ฒ ํ์ตํ์ค ์ ์์ ๊ฑฐ์์. ๊ฐ์์ ๋ชฉ(๊ฐ์๋ฒํธ)(ํ๋ก์ ํธ ์์ค ์ด๋ฆ) [์น์ 02]DI ์ฝ๊ฒ ์ดํดํ๊ธฐ - I : ๊ทธ๋์ ๊ฐ์ฒด๋ฅผ ์๋ชป ๋ค๋ฃจ๊ณ ์์๋ค์ (11๊ฐ)(mycalculator)DI ์ฝ๊ฒ ์ดํดํ๊ธฐ - II : ์ํ! ๊ฐ์ฒด๋ ์ด๋ ๊ฒ ๋ค๋ฃจ๋ ๊ฑฐ๊ตฌ๋!! (12๊ฐ)(mycalculator)IoC ์ฝ๊ฒ ์ดํดํ๊ธฐ : ์คํ๋ง์ด ๋์ ๊ด๋ฆฌํด์ค๋ค๊ณ ? (13๊ฐ)(mycalculator)ํ์ต ๋ด์ฉ์ ์ ๋ฆฌํ๋ฉฐ ๋ง๋ฌด๋ฆฌํ๋ DI์ IoC ์ค์ต: ์์กด์ฑ ์ฃผ์ ๊ณผ ์ ์ด์ ์ญ์ , Java ์ฝ๋๋ก ์ง์ ๊ฒฝํํ๊ธฐ (14๊ฐ)(mymessage) [์น์ 03]์ฒ์ ๋ง๋ค์ด ๋ณด๋ ์คํ๋ง ๋ถํธ ํ๋ก์ ํธ (15๊ฐ)(ch03_pjt_01)ํ๋ก์ ํธ ๊ตฌ์กฐ ์ดํดํ๊ธฐ-I : src ๋๋ ํฐ๋ฆฌ์ ์ดํด (16๊ฐ)(ch03_pjt_01)ํ๋ก์ ํธ ๊ตฌ์กฐ ์ดํดํ๊ธฐ-II : ๋น๋์ ์ดํด (17๊ฐ)(ch03_pjt_01)์๋ธ๋ฆฟ๊ณผ ์คํ๋ง MVC์ ์ดํด - I : ์๋ธ๋ฆฟ ์ปจํ ์ด๋์ IoC ์ปจํ ์ด๋ (18๊ฐ)(ch03_pjt_01)์๋ธ๋ฆฟ๊ณผ ์คํ๋ง MVC์ ์ดํด - II : HTTP ์์ฒญ๊ณผ ์๋ต (19๊ฐ)(ch03_pjt_01)์คํ๋ง MVC๋ฅผ ์ด์ฉํ ํ์๊ฐ์ ๋ฐ ๋ก๊ทธ์ธ ๊ตฌํ - I : ์์ ํ๋ฉด (20๊ฐ)(ch03_pjt_02)์คํ๋ง MVC๋ฅผ ์ด์ฉํ ํ์๊ฐ์ ๋ฐ ๋ก๊ทธ์ธ ๊ตฌํ - II : ๊ฒฐ๊ณผ ํ๋ฉด (21๊ฐ)(ch03_pjt_02)@RequestParam๊ณผ Model : ๋ฐ์ดํฐ ์ ๋ฌ๊ณผ ํ๋ฉด ๋ ๋๋ง (22๊ฐ)(ch03_pjt_02)์คํ๋ง MVC๋ฅผ ์ด์ฉํ ์ค๋งํธํฐ ์ฐ๋ฝ์ฒ ์๋น์ค ๊ตฌํ - I : ์ฐ๋ฝ์ฒ ๋ฑ๋ก (23๊ฐ)(phonebook)์คํ๋ง MVC๋ฅผ ์ด์ฉํ ์ค๋งํธํฐ ์ฐ๋ฝ์ฒ ์๋น์ค ๊ตฌํ - II : ์ฐ๋ฝ์ฒ ์กฐํ (24๊ฐ)(phonebook) [์น์ 04]์ ํ๋ฆฌ์ผ์ด์ ์์ ์ค๋น : ํ๋ก์ ํธ ๋ณต์ฌ (25๊ฐ)(ch04_pjt_01)Service ๋น ๊ฐ์ฒด ๊ตฌํ - I : ์คํ๋ง ์ค์ ํ์ผ (26๊ฐ)(ch04_pjt_01)Service ๋น ๊ฐ์ฒด ๊ตฌํ - II : @Configuration (27๊ฐ)(ch04_pjt_01)Service ๋น ๊ฐ์ฒด ๊ตฌํ - III : @Service (28๊ฐ)(ch04_pjt_01)DAO ๋น ๊ฐ์ฒด ๊ตฌํ (29๊ฐ)(ch04_pjt_01)๋ก๊ทธ์ธ Service, DAO ๊ตฌํ (30๊ฐ)(ch04_pjt_01) [์น์ 05]ํ(home.html) ํ๋ฉด ๋ง๋ค๊ธฐ (33๊ฐ)(calendar_33๊ฐ.zip)์ฌ์ฉ์ ํ์๊ฐ์ ๊ธฐ๋ฅ ๊ตฌํ (34๊ฐ)(calendar_34๊ฐ.zip)๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๋ํ๊ธฐ - I : JdbcTemplate (36๊ฐ)(calendar_36๊ฐ.zip)๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๋ํ๊ธฐ - II : DAO์์ ํ์๊ฐ์ ์ฒ๋ฆฌํ๊ธฐ (37๊ฐ)(calendar_37๊ฐ.zip)๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๋ํ๊ธฐ - III : ๋น๋ฐ๋ฒํธ ์ํธํ (38๊ฐ)(calendar_38๊ฐ.zip)๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๋ํ๊ธฐ - IV : ํ์๊ฐ์ ๊ฒฐ๊ณผ ํ๋ฉด (39๊ฐ)(calendar_39๊ฐ.zip) [์น์ 06]์ฌ์ฉ์ ๋ก๊ทธ์ธ ๊ธฐ๋ฅ ๊ตฌํ (40๊ฐ)(calendar_40๊ฐ.zip)์ธ์ ์ ์ด์ฉํ ๋ก๊ทธ์ธ ์ํ์ ์ง (41๊ฐ)(calendar_41๊ฐ.zip) [์น์ 07]๊ณ์ ์์ ๊ธฐ๋ฅ ๊ตฌํ (42๊ฐ)(calendar_42๊ฐ.zip)๋น๋ฐ๋ฒํธ ์ฐพ๊ธฐ ๊ธฐ๋ฅ ๊ตฌํ - I : ๋ฉ์ผ ๋ฐ์ก ์ค๋น (43๊ฐ)(calendar_43๊ฐ.zip)๋น๋ฐ๋ฒํธ ์ฐพ๊ธฐ ๊ธฐ๋ฅ ๊ตฌํ - II : ๋ฉ์ผ ๋ฐ์ก ๊ตฌํ (44๊ฐ)(calendar_44๊ฐ.zip)์ธํฐ์ ํฐ(Interceptor) (45๊ฐ)(calendar_45๊ฐ.zip) [์น์ 08]๋ค์ํ ์์กด์ฑ ์ฃผ์ (DI) ๋ฐฉ๋ฒ (46๊ฐ)(calendar_46๊ฐ.zip)๋กฌ๋ถ(lombok) : ์๋ ์ฝ๋ฉ (47๊ฐ)(calendar_47๊ฐ.zip)๋ก๊ฑฐ(logger) : Log4j2 - I : log4j2 ์ค์ ๊ณผ ์ฌ์ฉ (48๊ฐ)(calendar_48๊ฐ.zip)๋ก๊ฑฐ(logger) : Log4j2 - II : ๋ก๊ทธ ํ์ผ ์ด์ฉ (49๊ฐ)(calendar_49๊ฐ.zip)๋ก๊ฑฐ(logger) : Log4j2 - III : ๋ก๊ทธ ํ์ผ ๋ถ๋ฆฌ (50๊ฐ)(calendar_50๊ฐ.zip) [์น์ 09]MyBatis - I : ์ฟผ๋ฆฌ์๋ง ์ง์คํ์! (51๊ฐ)(calendar_51๊ฐ.zip)MyBatis - II : ์ค์ ํ์ผ๊ณผ ๋งคํ ๊ธฐ๋ฒ (52๊ฐ)(calendar_52๊ฐ.zip) [์น์ 10]๋ฉค๋ฒ ์๋น์ค CRUD์ JPA ์ ์ฉํ๊ธฐ - I : Entity ๋ง๋ค๊ธฐ (54๊ฐ)(calendar_54๊ฐ.zip)๋ฉค๋ฒ ์๋น์ค CRUD์ JPA ์ ์ฉํ๊ธฐ - II : EntityManager ๋ง๋ค๊ธฐ (55๊ฐ)(calendar_55๊ฐ.zip)๋ฆฌํํ ๋ง (56๊ฐ)(calendar_56๊ฐ.zip) [์น์ 11]Spring Security ์ ์ฉ - I (58๊ฐ)(calendar_58๊ฐ.zip)Spring Security ์ ์ฉ - II (59๊ฐ)(calendar_59๊ฐ.zip)๋ฆฌํํ ๋ง (60๊ฐ)(calendar_60๊ฐ.zip) [์น์ 12]๊ด๋ฆฌ์ ํ๋ก์ ํธ ์์ฑ (61๊ฐ)(calendaradmin_61๊ฐ.zip)๊ด๋ฆฌ์ ๋ฉค๋ฒ ์๋น์ค (62๊ฐ)(calendaradmin_62๊ฐ.zip)๊ด๋ฆฌ์ ๊ถํ ๋ณ๊ฒฝ ํ๊ธฐ - I : ๊ด๋ฆฌ์ ๋ชฉ๋ก ๊ตฌํ (64๊ฐ)(calendaradmin_64๊ฐ.zip)๊ด๋ฆฌ์ ๊ถํ ๋ณ๊ฒฝ ํ๊ธฐ - II : ๊ด๋ฆฌ์ ๊ถํ ๋ณ๊ฒฝ ๊ตฌํ (65๊ฐ)(calendaradmin_65๊ฐ.zip)์ฌ์ฉ์ ๊ถํ ๋ณ๊ฒฝ ํ๊ธฐ - I : ์ฌ์ฉ์ ๋ชฉ๋ก ๊ตฌํ (66๊ฐ)(calendaradmin_66๊ฐ.zip)์ฌ์ฉ์ ๊ถํ ๋ณ๊ฒฝ ํ๊ธฐ - II : ์ฌ์ฉ์ ๊ถํ ๋ณ๊ฒฝ ๊ตฌํ (67๊ฐ)(calendaradmin_67๊ฐ.zip) [์น์ 13]Spring Secutiry ์ธ๊ฐ(Authorization) ์ค์ (68๊ฐ)(calendar_68๊ฐ.zip)์บ๋ฆฐ๋ ๊ธฐ๋ณธ UI ๋ง๋ค๊ธฐ (69๊ฐ)(calendar_69๊ฐ.zip) [์น์ 14]์ผ์ ๋ฑ๋ก ๊ธฐ๋ฅ ๊ตฌํ - I : ํ๋ก ํธ ์๋ (70๊ฐ)(calendar_70๊ฐ.zip)์ผ์ ๋ฑ๋ก ๊ธฐ๋ฅ ๊ตฌํ - II : ๋ฐฑ ์๋ (71๊ฐ)(calendar_71๊ฐ.zip)์ผ์ ์กฐํ ๊ธฐ๋ฅ ๊ตฌํ (72๊ฐ)(calendar_72๊ฐ.zip) [์น์ 15]์ผ์ ์์ ๊ธฐ๋ฅ ๊ตฌํ (73๊ฐ)(calendar_73๊ฐ.zip)์ผ์ ์ญ์ ๊ธฐ๋ฅ ๊ตฌํ (74๊ฐ)(calendar_74๊ฐ.zip) ์ถ๊ฐ๋ก ๊ถ๊ธํ ์ ์ด ์์ผ์๋ฉด ์ธ์ ๋ ์ง ํธํ๊ฒ ๋ฌธ์ํด์ฃผ์ธ์.ํญ์ ์์ํ๊ณ ์๊ฒ ์ต๋๋ค!
- 0
- 1
- 128