๐๊ฐ์
Spring ์๋ฒ๋ฅผ ์คํํ๊ณ ํฌ๋กฌ์์ ๋ก์ปฌ ํธ์คํธ๋ฅผ ์ ์ํ ๋ค ๊ฐ๋ฐ์ ๋ชจ๋๋ฅผ ํ์ฑํ ํ ๋ ๊ณ์ ๊ฐ์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ค.
์ค๋ฅ๊ฐ ๋ฐ์ํ ์์ ์ ์ฌ์ฉ์ ์ ์ ์์ธ๋ฅผ ๊ณตํต์ผ๋ก ์ฒ๋ฆฌํ๊ธฐ ์ํด ํด๋์ค๋ฅผ ์ถ๊ฐํ ์์ ์ ๋ฐ์ํ๋ค.
ํ๋ก๊ทธ๋จ์๋ ์ํฅ์ด ์๋ ๊ฒ ๊ฐ์์ง๋ง ์ค๋ฅ๋๊น ๊ฑฐ์ฌ๋ฆฐ๋ค. ํ๋ก๋์ ํ๊ฒฝ์์ ๋ฌธ์ ์๋ ๊ฒ ๊ฐ์๋ฐ ๋ก์ปฌ ๊ฐ๋ฐ ํ๊ฒฝ์์ ์์ฃผ ๋ฐ๊ฒฌ๋๋ ๊ฒ ๊ฐ๋ค.
๐๋ด์ฉ
|
|
๋ก๊ทธ ํฌ๋งท์ ๋ณ๊ฒฝํด์ ์ผ๋ฐ์ ์ด์ง ์๊ฒ ์ง๋ง ์ด ๋ถ๋ถ .well-known/appspecific/com.chrome.devtools.json.
,
๊ฐ๋ฐ์ ๋ชจ๋๋ฅผ ํ์ฑํํ ๋๋ง๋ค ์ ์ ๋ฆฌ์์ค๋ฅผ ์์ฒญํ๋ค.
ํฌ๋ก๋ฏธ์ ๊ธฐ๋ฐ ๋ธ๋ผ์ฐ์ ์์ ๋ก์ปฌ ํธ์คํธ์ ๊ฐ๋ฐ ์๋ฒ๋ฅผ ์ด ๋ ์ฌํํ ์ ์๋ ๊ฒ ๊ฐ์๋ฐ ๊ทธ๋์ ์ ์ค๋ฅ๊ฐ ๋ญ์ง ๊ถ๊ธํ๋ค.
Chromium DevTools Ecosystem Guide๋ฌธ์์์ ๊ด๋ จ ๋ด์ฉ์ ํ์ธํ ์ ์๋ค.
์ด๋ค ํด๊ฒฐ ๋ฐฉ๋ฒ์ด ์์๊น
ํฌ๋กฌ ๊ฐ๋ฐ์ ๋๊ตฌ๊ฐ ์๋์ผ๋ก .well-known/appspecific/… ํ์ผ์ ์์ฒญํ๋ฉด์ ์๊ธฐ๋ ํ์. ์๋ฒ์ ์ค์ ๋ก ํด๋น ์ ์ ๋ฆฌ์์ค๊ฐ ์์ด์ Spring์ด ์ค๋ฅ๋ฅผ ๋์ง๋ ๊ฒ์ด๋ฉฐ, ๋ณด์ ์ํ์ ์๋ค.
- ๋ฌด์ํ๊ฑฐ๋
- ๋๋ฏธ ๋ฆฌ์์ค๋ฅผ ๋ง๋ค์ด์ฃผ๊ฑฐ๋
- ์์ฒญ ๊ฒฝ๋ก ํํฐ๋ง์ผ๋ก ์ฒ๋ฆฌํ๋ค.
์ฝ๋ ๊ธฐ๋ฐ์ผ๋ก ์ดํด ๋ณด๊ธฐ
์ผ๋จ ๋ด ๊ฒฝ์ฐ๋ ์๋ฌ ํธ๋ค๋ฌ ์ถ๊ฐ๊น์ง ์ ๋ณด์ด๋ค๊ฐ ๋ก๊ทธ๋ฅผ ๋จ๊ธฐ๋ ์์ ์ ๋ณด์ด๊ธฐ ์์ํ๋ค.
๋๋นต(?)์ ํ๊ธด ํ์ง๋ง ๋ณ๋ก ์ข์ ํด๊ฒฐ์ฑ ์ ์๋ ๊ฒ ๊ฐ๊ณ .. ์ผ๋จ ์ฝ๋ ๋์ถฉ ๋ณด๊ณ ์์ธ๋ถํฐ ์์๋ณด์.
|
|
Spring MVC๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ค์๊ณผ ๊ฐ์ด ์์ธ๋ฅผ ์ฒ๋ฆฌํ๋ค.
- ์ ์ ๋ฆฌ์์ค๋ฅผ ์ฐพ์ง ๋ชปํ๋ฉด
NoResourceFoundException
๋๋NoHandlerFoundException
์ ๋ฐ์ ์ํจ๋ค. - ์ด ์์ธ๋ ๊ธฐ๋ณด์ ์ผ๋ก Spring ๋ด๋ถ DispatcherSevlet์ด ์ฒ๋ฆฌํ๊ณ ๋ธ๋ผ์ฐ์ ์ 404 ์๋ต๋ง ๋ณด๋ด์ง ๋ก๊ทธ๋ก ๋จ๊ธฐ์ง ์๋๋ค.
๊ทธ๋ฐ๋ฐ… ์ด๋ ๊ฒ ๋ช ์์ ์ผ๋ก ๋ก๊ทธ๋ฅผ ๋ฐ์ ๋ฒ๋ฆฌ๋ฉด
- Spring์ ๋ด๋ถ ์์ธ ์ฒ๋ฆฌ ๋ฉ์ปค๋์ฆ์ ๊ฐ๋ก์ฑ๋ค
.well-known/...
๊ฐ์ ์์ฒญ์์ ๋ฐ์ํ๋ ์์ธ๋ ์กํ๋ค.- ํธ๋ค๋ฌ๋ ์ ์ ์๋ ์์คํ ์ค๋ฅ๋ก ๊ฐ์ฃผํ๊ณ log.error()๋ฅผ ๋จ๊ธด๋ค.
- ๊ทธ ๊ฒฐ๊ณผ ํฌ๋กฌ ๊ฐ๋ฐ์ ๋๊ตฌ์์ ์๋์ผ๋ก ๋ณด๋ด๋ ์์ฒญ์์๋ ์๋ฌ ๋ก๊ทธ๊ฐ ์์ธ๋ค.
1 2 3 4 5
@ExceptionHandler(Exception.class) public ResponseEntity<ErrorResponse> handleGeneralException(Exception e) { log.error("[์์คํ ์ค๋ฅ] {}", e.getMessage(), e); ... }
์ง๊ธ์ ๋๋ก์ ..
.well-known
์์ฒญ์ ํํฐ๋ ํธ๋ค๋ฌ์์ ๋ฐ๋ก ๋ฌด์ ์ฒ๋ฆฌ- ๋๋
@ExceptionHandler
์ ๋ฒ์๋ฅผ ์ขํ์ ์์คํ ์์ธ ์ธ์๋ ๋ฌด์ - ๊ฐ์ฅ ๊น๋ํ ๋ฐฉ๋ฒ์ ํ์ ์๋ ๊ฒฝ๋ก์ ์์ธ๋ ๋ก๊น ํ์ง ์๋๋ก ๋ถ๊ธฐ ์ฒ๋ฆฌํ๋ ๊ฒ
Automatic Workspace Folders๋?
Chrome DevTools (๋ฒ์ M-135 ์ด์) ์์ ๋์ ๋ ๊ธฐ๋ฅ์ผ๋ก, DevTools๊ฐ ๊ฐ๋ฐ ์๋ฒ(devserver)๋ก๋ถํฐ ํ๋ก์ ํธ ๋๋ ํ ๋ฆฌ ์ ๋ณด๋ฅผ ์๋์ผ๋ก ์ธ์ํด, ๋ก์ปฌ ์ํฌ์คํ์ด์ค๋ก ์ฐ๊ฒฐํ๋ ๊ธฐ๋ฅ์ด๋ค.
๊ธฐ์กด์ Workspaces ๊ธฐ๋ฅ์ ์๋ํํ ๊ฒ์ผ๋ก, ๋๋ฒ๊น ์ค DevTools์์ ์์ค ์ฝ๋๋ฅผ ์์ ํ ๋ ํด๋น ์์ ์ฌํญ์ด ๋ก์ปฌ ํ์ผ์ ์ง์ ๋ฐ์๋ ์ ์๋๋ก ์ค์ ํด์ค๋ค๊ณ ํ๋ค.
์ด๋ฐ ๊ธฐ๋ฅ์ด ์๊ธด ๋ฐฐ๊ฒฝ
๊ธฐ์กด DevTools Workspaces ๊ธฐ๋ฅ(M-63 ๋์ )์ ๋ค์๊ณผ ๊ฐ์ ๋ถํธ์ด ์์๋ค.
- ์๋ ์ค์ ์ด ํ์ํจ (Workspace ํญ์์ ์ง์ ํด๋ ์ง์ )
- ํ๋ก์ ํธ๋ณ ๊ด๋ฆฌ๊ฐ ๋ถํธํจ (๋งค๋ฒ ํด๋ ์ถ๊ฐ/์ญ์ ํ์)
์๋ ๋ฐฉ์
Chrome DevTools๋ ๋ค์ ์กฐ๊ฑด์ ๋ง์กฑํ ๋ ์๋์ผ๋ก .well-known/appspecific/com.chrome.devtools.json
ํ์ผ์ ์์ฒญํ๋ค.
- ๋ธ๋ผ์ฐ์ ์์ ์ฌ๋ ํ์ด์ง์ origin์ด
localhost
- DevTools๊ฐ ์ด๋ ค ์๋ ์ํ
์ด ํ์ผ์ด ์กด์ฌํ๋ฉด DevTools๋ ํด๋น ์ ๋ณด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์๋์ผ๋ก ์ํฌ์คํ์ด์ค๋ก ์ฐ๊ฒฐํ๋ค.
์์ฒญ๋๋ JSON ํ์ผ
- ์์ฒญ ๊ฒฝ๋ก:
/.well-known/appspecific/com.chrome.devtools.json
- ์ด JSON ํ์ผ์ ๋ค์๊ณผ ๊ฐ์ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๋ค.
1 2 3 4 5 6
{ "workspace": { "root": "/Users/foobar/Projects/my-awesome-web-project", "uuid": "53b029bb-c989-4dca-969b-835fecec3717" } }
- ๊ฐ ํ๋ ์ค๋ช
workspace.root
: ํ๋ก์ ํธ ๋๋ ํ ๋ฆฌ์ ์ ๋ ๊ฒฝ๋กworkspace.uuid
: ํ๋ก์ ํธ ๊ณ ์ ์๋ณ์ (v4 UUID ๋ฑ ๋ฌด์์๋ก ์์ฑ)
์ฌ์ฉ ์กฐ๊ฑด
- M-135 ์ด์์์ ์ฌ์ฉ ๊ฐ๋ฅ
- M-136์์๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๊ธฐ๋ฅ์ด ํ์ฑํ๋์ด ์์
- ์ด์ ๋ฒ์ ์์๋ ๋ค์ ๋ ํ๋๊ทธ๋ฅผ ํ์ฑํํด์ผ ํจ
1 2
chrome://flags#devtools-project-settings chrome://flags#devtools-automatic-workspace-folders
์์ฝ ์ ๋ณด
ํญ๋ชฉ | ๋ด์ฉ |
---|---|
๊ธฐ๋ฅ ์ด๋ฆ | Automatic Workspace Folders |
๋์ ๋ฒ์ | M-135 (๊ธฐ๋ฅ ๋นํ์ฑํ), M-136 (๊ธฐ๋ณธ ํ์ฑํ) |
๋ชฉ์ | DevTools์์ ๋ก์ปฌ ํ๋ก์ ํธ์ ์๋ ์ฐ๊ฒฐํ์ฌ ์ฝ๋ ์์ ๋ฐ์ |
์๋ ์กฐ๊ฑด | origin์ด localhost ์ผ ๋ DevTools์์ JSON ์์ฒญ |
๊ฒฝ๋ก | /.well-known/appspecific/com.chrome.devtools.json |
JSON ํ๋ | workspace.root , workspace.uuid |
๋ถ๊ฐ ๋๊ตฌ | Vite ํ๋ฌ๊ทธ์ธ ์กด์ฌ, npx serve ์์ ์ ๊ณต๋จ |
๐ฏ๊ฒฐ๋ก
๋ช ํํ ํด๊ฒฐ์ฑ ์ ์์ง๋ง ๋ถํ์ํ ๋ก๊ทธ๋ฅผ ์ถ๋ ฅํ์ง ์๊ฒ ์ค์ ํ๋ ๊ฒ์ด ์ข๊ฒ ๋ค. ํฌ๋กฌ ๊ธฐ๋ฅ์ ๋ํด ์ค์ ์ฌ์ฉ ์์๋ ํ๊ณ, ์กฐ๊ฑด ๋ฑ์ ์์๋ณด๋ ๊ฒ๋ ์ข๊ฒ ๋ค.