์›น์†Œ์ผ“ ์—ฐ๊ฒฐ์—์„œ ์ฟ ํ‚ค๊ฐ€ ์—†์–ด ๋ณด์˜€๋˜ ์ด์œ 

2026. 5. 18. 00:43ยท๊ฐœ๋ฐœ/๊ธฐ์ˆ 

์ƒํ™ฉ

์›น์†Œ์ผ“ ์—ฐ๊ฒฐ ํ…Œ์ŠคํŠธ๋ฅผ ํ•˜๋˜ ์ค‘ ํ”„๋ก ํŠธ์—”๋“œ ํŒ€์›์—๊ฒŒ ์•„๋ž˜์™€ ๊ฐ™์€ ๋ฉ”์‹œ์ง€๋ฅผ ๋ฐ›์•˜๋‹ค.

์š”์ฒญ ํ—ค๋”์— ์ฟ ํ‚ค๊ฐ€ ์—†๋Š”๋ฐ ์›น์†Œ์ผ“ ์—ฐ๊ฒฐ์ด ๋˜๊ณ , ์ฑ„ํŒ… ๋ฉ”์„ธ์ง€๋„ ์ž˜ ๋ณด๋‚ด์ง€๋„ค?

๋ฌด์Šจ ๋ง์ด์ง€? ์›น์†Œ์ผ“์— ๊ธฐ๋ฐ˜ํ•œ ์ฑ„ํŒ…์€ ๋กœ๊ทธ์ธ๋œ ์‚ฌ์šฉ์ž๋งŒ ๊ฐ€๋Šฅํ•˜๋‹ค. ๋”ฐ๋ผ์„œ ๋กœ๊ทธ์ธ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ํ† ํฐ์„ ํ†ตํ•œ ์ธ์ฆ ๊ณผ์ •์„ ๊ฑฐ์นœ๋‹ค. ์ด๋•Œ ํ† ํฐ์€ ์ฟ ํ‚ค์— ๋‹ด๊ฒจ ์š”์ฒญ ํ—ค๋”์— ์‹ค๋ฆฐ๋‹ค.

 

๊ทธ๋Ÿฐ๋ฐ, ํด๋ผ์ด์–ธํŠธ ์ธก์—์„œ ์›น์†Œ์ผ“ ์—ฐ๊ฒฐ์„ ํ•˜๋˜ ์ค‘ ์ฟ ํ‚ค๊ฐ€ ์—†๋Š”๋ฐ ์›น์†Œ์ผ“ ์—ฐ๊ฒฐ์ด ์ž˜ ๋˜๊ณ , ๋ฉ”์‹œ์ง€๋„ ์ž˜ ๋ณด๋‚ด์ง„๋‹ค๊ณ  ํ•œ๋‹ค. 

 

ํ”„๋กœ์ ํŠธ์˜ ์›น์†Œ์ผ“ ์ธ์ฆ ํ๋ฆ„


ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„๋กœ ์›น์†Œ์ผ“ ์—ฐ๊ฒฐ ์š”์ฒญ์„ ๋ณด๋‚ด๋ฉด ์„œ๋ฒ„์˜ HandshakeInterceptor๊ฐ€ ์š”์ฒญ์— ๋‹ด๊ฒจ์žˆ๋Š” ์ฟ ํ‚ค๋ฅผ ๊บผ๋‚ด์–ด ํ† ํฐ์œผ๋กœ ์‚ฌ์šฉ์ž ์ธ์ฆ์„ ์ง„ํ–‰ํ•œ๋‹ค. ํ† ํฐ์ด ์œ ํšจํ•˜์ง€ ์•Š๊ฑฐ๋‚˜, ๋งŒ๋ฃŒ๋œ ํ† ํฐ์ด๋ผ๋ฉด ์˜ˆ์™ธ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ณ , ํ† ํฐ์ด ์œ ํšจํ•˜๋‹ค๋ฉด ๊ณ„์† ์ง„ํ–‰ํ•œ๋‹ค.

์ฆ‰, ํ† ํฐ์ด ์—†๋‹ค๋ฉด ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•ด์•ผ ์ •์ƒ์ด๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์œ„์˜ ๋ฉ”์„ธ์ง€๋Š” ํ—ค๋”์— ์ฟ ํ‚ค๊ฐ€ ์—†๋Š” ์ƒํƒœ์ธ๋ฐ, ์–ด๋–ป๊ฒŒ ์—ฐ๊ฒฐ์ด ์ •์ƒ์ ์œผ๋กœ ์ด๋ฃจ์–ด์ง„ ๊ฑธ๊นŒ?

 

๋””๋ฒ„๊น…์—์„œ ๋ณธ ์ด์ƒํ•œ ํ˜„์ƒ


์š”์ฒญ์„ ๋ณด๋ƒˆ์„ ๋•Œ์˜ ์š”์ฒญ ํ—ค๋”๋ฅผ ๋ณด๋ฉด ์ •๋ง๋กœ ์ฟ ํ‚ค๊ฐ€ ๋ณด์ด์ง€ ์•Š๋Š”๋‹ค.

 

ํ•ธ๋“œ์…ฐ์ดํฌ๋ฅผ ์ง„ํ–‰ํ•˜๋Š” ๋‹จ๊ณ„์—์„œ ๋ธŒ๋ ˆ์ดํฌ ํฌ์ธํŠธ๋ฅผ ์ฐ๊ณ  ์ฟ ํ‚ค๊ฐ€ ์กด์žฌํ•˜๋Š”์ง€ ํ™•์ธํ•ด ๋ดค๋‹ค.

์›น์†Œ์ผ“ ์ ‘์† ์š”์ฒญ์„ ๋ณด๋ƒˆ์„ ๋•Œ request๋ฅผ ๋ณด๋ฉด cookies = null ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋Ÿผ ์ง„์งœ null์ธ๊ฐ€?

์•„๋‹ˆ๋‹ค. ์ฟ ํ‚ค๊ฐ€ null์ด๋ผ๋ฉด ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. ์กฐ๊ธˆ ๋” ์‹คํ–‰ํ•ด ๋ณด์ž.

request์—์„œ getCookies()๋ฅผ ์‹คํ–‰ํ•œ ํ›„์— ๊ฐ‘์ž๊ธฐ null์ด์—ˆ๋˜ ์ฟ ํ‚ค๊ฐ€ ์ƒ๊ฒผ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํ•„์š”ํ•œ ํ† ํฐ์ด ๋“ค์–ด์žˆ๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

๋ถ„๋ช… ์ฒ˜์Œ์—” null์ด์—ˆ๋Š”๋ฐ ์–ด๋–ป๊ฒŒ ๊ฐ’์ด ์ถ”๊ฐ€๋œ ๊ฑธ๊นŒ? ๊ทธ๋ž˜์„œ getCookies()์˜ ๋‚ด๋ถ€ ๊ตฌํ˜„์„ ์‚ดํŽด๋ดค๋‹ค.

 

getCookies()๋ฅผ ํ˜ธ์ถœํ•˜์ž ์ฟ ํ‚ค๊ฐ€ ์ƒ๊ธด ์ด์œ 


SecurityUtil.isPackageProtectionEnabled()๊ฐ€ false๋ผ๊ณ  ํ•˜๋Š”๋ฐ, ์™œ false์ธ์ง€ ๊ถ๊ธˆํ•ด์„œ ์ฐพ์•„๋ดค๋‹ค.
public static boolean isPackageProtectionEnabled() SecurityManager๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค๋งŒ, Security๊ฐ€ ํ™œ์„ฑํ™”๋˜์–ด ์žˆ๊ณ  package protection ๋ฉ”์ปค๋‹ˆ์ฆ˜์ด ํ™œ์„ฑํ™”๋˜์–ด ์žˆ์„ ๋•Œ๋งŒ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

๋ผ๊ณ  ํ•œ๋‹ค. package protection์€ ํ†ฐ์บฃ์˜ ๋‚ด๋ถ€ ๊ฐœ๋…์œผ๋กœ, ์„œ๋ธ”๋ฆฟ ์ฝ”๋“œ๊ฐ€ ๊ฐ™์€ ํ†ฐ์บฃ ๋‚ด๋ถ€ ํŒจํ‚ค์ง€์— ์ ‘๊ทผํ•˜๋Š” ๊ฒƒ์„ ์ œํ•œํ•˜๊ธฐ ์œ„ํ•œ ๋ชฉ์ ์˜ ๊ฐœ๋…์ด๋‹ค. ํ•˜์ง€๋งŒ ํ˜„๋Œ€์˜ ์„œ๋ฒ„์—์„œ๋Š” ๋Œ€๋ถ€๋ถ„ ๋ฆฌํ„ด๊ฐ’์ด false๋ผ๊ณ  ํ•˜๋Š”๋ฐ, Java 17 ์ดํ›„ SecurityManager deprecated ๋˜์—ˆ๋‹ค๊ณ  ํ•œ๋‹ค.

 

๋‚ด๋ถ€๋กœ ๋” ๋“ค์–ด๊ฐ€ ๋ณด์ž.

Tomcat์˜ getCookies() ๋‚ด๋ถ€ ๊ตฌํ˜„์„ ๋”ฐ๋ผ๊ฐ€ ๋ณด๋ฉด cookiesConverted๋ผ๋Š” ํ”Œ๋ž˜๊ทธ๊ฐ€ ๋‚˜์˜จ๋‹ค.

์ด ๊ฐ’์€ ์š”์ฒญ์— ๋“ค์–ด์˜จ ์ฟ ํ‚ค๊ฐ€ Servlet API์˜ Cookie[] ๊ฐ์ฒด๋กœ ๋ณ€ํ™˜๋˜์—ˆ๋Š”์ง€๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค. ๋Œ€๋žต์ ์ธ ํ๋ฆ„์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

getCookies()
  -> cookiesConverted ํ™•์ธ
  -> false๋ผ๋ฉด convertCookies() ์‹คํ–‰
  -> ๋‚ด๋ถ€ ์ฟ ํ‚ค ํ‘œํ˜„์„ Servlet Cookie ๊ฐ์ฒด๋กœ ๋ณ€ํ™˜
  -> Cookie[] ๋ฐ˜ํ™˜

 

ํ†ฐ์บฃ์€ ์š”์ฒญ์ด ๋“ค์–ด์˜ค๋Š” ์ˆœ๊ฐ„๋ถ€ํ„ฐ ๋ฌด์กฐ๊ฑด Cookie[]๋ฅผ ๋งŒ๋“ค์–ด๋‘์ง€ ์•Š๋Š”๋‹ค. ํ•„์š”ํ•œ ์‹œ์ , ์ฆ‰ getCookies()๊ฐ€ ํ˜ธ์ถœ๋˜๋Š” ์‹œ์ ์— ๋ณ€ํ™˜ํ•œ๋‹ค. ๊ทธ๋ž˜์„œ ๋””๋ฒ„๊น…์—์„œ ์ฒ˜์Œ์—๋Š” cookies = null๋กœ ๋ณด์˜€๋˜ ๊ฒƒ์ด๋‹ค. ์•„์ง ๋ณ€ํ™˜์ด ์‹คํ–‰๋˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

getCookies()๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด ๊ทธ๋•Œ ๋‚ด๋ถ€์ ์œผ๋กœ convertCookies()๊ฐ€ ์‹คํ–‰๋˜๊ณ , ์š”์ฒญ์— ํฌํ•จ๋˜์–ด ์žˆ๋˜ ์ฟ ํ‚ค๋“ค์ด Cookie[] ํ˜•ํƒœ๋กœ ๋ณ€ํ™˜๋œ๋‹ค.

๊ฒฐ๋ก ์ ์œผ๋กœ ์ฟ ํ‚ค๊ฐ€ ๊ฐ‘์ž๊ธฐ ์ƒ๊ธด ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ์›๋ž˜ ์š”์ฒญ์—๋Š” ์ฟ ํ‚ค๊ฐ€ ์žˆ์—ˆ๊ณ , ํ†ฐ์บฃ์ด ๊ทธ ์ฟ ํ‚ค๋ฅผ ๋‚˜์ค‘์— ๊ฐ์ฒด๋กœ ๋ณ€ํ™˜ํ•œ ๊ฒƒ์ด๋‹ค.

cookiesConverted ๊ฐ€ false๋ผ๋ฉด convertCookies()๊ฐ€ ์‹คํ–‰๋œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์š”์ฒญ์˜ ๋ชจ๋“  ์ฟ ํ‚ค๋ฅผ ๋ฐ˜ํ™˜ํ•˜์—ฌ ํ•˜๋‚˜์”ฉ Cookie ๊ฐ์ฒด์— ์ถ”๊ฐ€ํ•œ๋‹ค.

์ด์ œ null ์ด์—ˆ๋˜ cookies์— ํ† ํฐ์ด ๋“ค์–ด๊ฐ„ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

 

ํ†ฐ์บฃ์€ Cookie[] ๊ฐ์ฒด ๋ณ€ํ™˜์„ lazy ํ•˜๊ฒŒ ์ˆ˜ํ–‰ํ•œ๋‹ค.


ํ†ฐ์บฃ์€ ์š”์ฒญ์ด ๋“ค์–ด์˜ฌ ๋•Œ ๋ชจ๋“  ๊ฐ’์„ ์ฆ‰์‹œ ๊ฐ์ฒด๋กœ ๋ณ€ํ™˜ํ•˜์ง€ ์•Š๊ณ , ํ•„์š” ์‹œ์ ๊นŒ์ง€ ํŒŒ์‹ฑ์„ ๋ฏธ๋ฃฌ๋‹ค.

 

์™œ ์š”์ฒญ์ด ๋“ค์–ด์˜จ ์ฆ‰์‹œ ์ฟ ํ‚ค๋ฅผ ํŒŒ์‹ฑ ํ•˜์ง€ ์•Š์„๊นŒ?

์ฟ ํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ์š”์ฒญ๋„ ๋งŽ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ๋ชจ๋“  ์š”์ฒญ๋งˆ๋‹ค ๋ฌด์กฐ๊ฑด ์ฟ ํ‚ค ๋ฌธ์ž์—ด์„ ํŒŒ์‹ฑํ•˜๊ณ  Cookie ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค๋ฉด ๋ถˆํ•„์š”ํ•œ ๋น„์šฉ์ด ์ƒ๊ธด๋‹ค.

์ด ๋ฌธ์ œ๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด์„œ ํ†ฐ์บฃ์€ ๋Šฆ๊ฒŒ ํŒŒ์‹ฑ ํ•˜๋Š” ๊ฒƒ ๊ฐ™๋‹ค.

 

์›น์†Œ์ผ“ ํ•ธ๋“œ์…ฐ์ดํฌ์™€ ์ฟ ํ‚ค


๊ทธ๋Ÿผ ๊ทผ๋ณธ์ ์œผ๋กœ ์›น์†Œ์ผ“ ์š”์ฒญ์— ์ฟ ํ‚ค๊ฐ€ ๋ถ™๋Š” ๊ฒƒ์ด ๋งž์„๊นŒ? ์›น์†Œ์ผ“์€ ์ฒ˜์Œ๋ถ€ํ„ฐ ์›น์†Œ์ผ“ ํ”„๋กœํ† ์ฝœ๋กœ ์‹œ์ž‘๋˜์ง€ ์•Š๋Š”๋‹ค. ์ฒ˜์Œ์—๋Š” ์ผ๋ฐ˜ HTTP ์š”์ฒญ์œผ๋กœ ์‹œ์ž‘ํ•œ ๋’ค, HTTP Upgrade ๊ณผ์ •์„ ํ†ตํ•ด ์›น์†Œ์ผ“ ์—ฐ๊ฒฐ๋กœ ์ „ํ™˜๋œ๋‹ค.

GET /ws HTTP/1.1
Host: example.com
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Key: ...
Sec-WebSocket-Version: 13
Cookie: accessToken=...
Origin: https://example.com

 

์„œ๋ฒ„๊ฐ€ ์ด ์š”์ฒญ์„ ๋ฐ›์œผ๋ฉด 101 Switching Protocols ์‘๋‹ต์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ๊ทธ ์ดํ›„๋ถ€ํ„ฐ ์›น์†Œ์ผ“ ์—ฐ๊ฒฐ์ด ์‹œ์ž‘๋œ๋‹ค.

์ฆ‰, ์›น์†Œ์ผ“ ์—ฐ๊ฒฐ์˜ ์‹œ์ž‘์ ์€ HTTP ํ•ธ๋“œ์…ฐ์ดํฌ๋‹ค. ๊ทธ๋ž˜์„œ ์ด ๋‹จ๊ณ„์—์„œ๋Š” ์ผ๋ฐ˜ HTTP ์š”์ฒญ์ฒ˜๋Ÿผ ํ—ค๋”, ์ฟ ํ‚ค, Origin ๋“ฑ์„ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๋‹ค. 

 

๋ธŒ๋ผ์šฐ์ €์˜ ํ‘œ์ค€ ์›น์†Œ์ผ“ API๋Š” ๋ณด์•ˆ์ƒ์˜ ์ด์œ ๋กœ Authorization ๊ฐ™์€ ์ž„์˜์˜ HTTP ํ—ค๋”๋ฅผ ์ง์ ‘ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์—†๋‹ค.

๊ทธ๋ž˜์„œ ๋ธŒ๋ผ์šฐ์ € ๊ธฐ๋ฐ˜ ์›น์†Œ์ผ“ ์ธ์ฆ์—์„œ๋Š” ๋ณดํ†ต ๋‹ค์Œ ๋ฐฉ์‹ ์ค‘ ํ•˜๋‚˜๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

  • ์ฟ ํ‚ค ๊ธฐ๋ฐ˜ ์ธ์ฆ
  • Query Parameter ํ† ํฐ ์ „๋‹ฌ
  • STOMP CONNECT ํ”„๋ ˆ์ž„์— ํ† ํฐ ์ „๋‹ฌ

์ด๋ฒˆ ํ”„๋กœ์ ํŠธ์—์„œ๋Š” HTTP ํ•ธ๋“œ์…ฐ์ดํฌ ๋‹จ๊ณ„์—์„œ ์ฟ ํ‚ค๋ฅผ ํ†ตํ•ด ์ธ์ฆ์„ ์ฒ˜๋ฆฌํ•˜๊ณ  ์žˆ์—ˆ๋‹ค.

 

๊ทธ๋Ÿผ ์™œ ๋ธŒ๋ผ์šฐ์ €์˜ ๊ฐœ๋ฐœ์ž ๋„๊ตฌ์—๋Š” ์ฟ ํ‚ค๊ฐ€ ์•ˆ ๋ณด์˜€๋˜ ๊ฑธ๊นŒ?


์ฒ˜์Œ์—๋Š” Chrome ๊ฐœ๋ฐœ์ž ๋„๊ตฌ์˜ ์›น์†Œ์ผ“ ์š”์ฒญ ํ—ค๋”์— ์ฟ ํ‚ค๊ฐ€ ๋ณด์ด์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์—, ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์ฟ ํ‚ค๋ฅผ ๋ณด๋‚ด์ง€ ์•Š์•˜๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค.

ํ•˜์ง€๋งŒ ์„œ๋ฒ„์—์„œ `request.getHeader("Cookie")` ์™€ `request.getCookies()`๋ฅผ ํ™•์ธํ•ด ๋ณด๋‹ˆ, ์‹ค์ œ๋กœ๋Š” ์ธ์ฆ ํ† ํฐ ์ฟ ํ‚ค๊ฐ€ ์š”์ฒญ์— ํฌํ•จ๋˜์–ด ์žˆ์—ˆ๋‹ค. ์ฆ‰, ์ฟ ํ‚ค๊ฐ€ ์—†๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ๊ฐœ๋ฐœ์ž ๋„๊ตฌ ์ƒ์—์„œ ํ™•์ธ๋˜์ง€ ์•Š์•˜๋˜ ๊ฒƒ์ด๋‹ค.

์ •ํ™•ํžˆ ์™œ Chrome ๊ฐœ๋ฐœ์ž ๋„๊ตฌ์—์„œ ์š”์ฒญ ์ฟ ํ‚ค๊ฐ€ ๋ณด์ด์ง€ ์•Š์•˜๋Š”์ง€๋Š” ํ™•์ธํ•˜์ง€ ๋ชปํ–ˆ์ง€๋งŒ, ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์ฟ ํ‚ค๋ฅผ ๋ณด๋‚ด์ง€ ์•Š์€ ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ๊ฐœ๋ฐœ์ž ๋„๊ตฌ์—์„œ ๋ณด์ด์ง€ ์•Š์•˜๋˜ ๊ฒƒ์— ๊ฐ€๊นŒ์› ๋‹ค.

 

์ •๋ฆฌ


์š”์ฒญ ํ—ค๋”์— ์ฟ ํ‚ค๊ฐ€ ๋ณด์ด์ง€ ์•Š์•„ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์ฟ ํ‚ค๋ฅผ ๋ณด๋‚ด์ง€ ์•Š์•˜๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ์ง€๋งŒ, ์‹ค์ œ ์š”์ฒญ์—๋Š” ์ธ์ฆ ์ฟ ํ‚ค๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์—ˆ๋‹ค. ์ด ๊ณผ์ •์„ ๋””๋ฒ„๊น…ํ•˜๋ฉฐ ํ†ฐ์บฃ์ด ์ฟ ํ‚ค๋ฅผ ์ฆ‰์‹œ ํŒŒ์‹ฑํ•˜์ง€ ์•Š๊ณ , getCookies() ํ˜ธ์ถœ ์‹œ์ ์— ์ง€์—ฐ ๋ณ€ํ™˜ํ•œ๋‹ค๋Š” ๋‚ด๋ถ€ ๋™์ž‘๊นŒ์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.

 

AI๋กœ ์ด์ •๋„ ๋ฌธ์ œ์˜ ์›์ธ์„ ์ฐพ๋Š” ๊ฒƒ์€ ๋”ธ๊น์œผ๋กœ ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ์ด๋ ‡๊ฒŒ ์ง์ ‘ ํ๋ฆ„์„ ์ถ”์ ํ•˜๋ฉฐ ๋‚ด๋ถ€ ๊ตฌํ˜„์„ ํ™•์ธํ•œ ๊ณผ์ • ์ž์ฒด๊ฐ€ ์˜๋ฏธ์žˆ๋Š” ํ•™์Šต์ด์—ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•œ๋‹ค.

'๊ฐœ๋ฐœ > ๊ธฐ์ˆ ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

๋”ฐ๋‹ฅ ํด๋ฆญ๋งŒ ๋ง‰์œผ๋ฉด ๋๋‚  ์ค„ ์•Œ์•˜์Šต๋‹ˆ๋‹ค  (2) 2026.02.15
์ง€์—ฐ๋กœ๋”ฉ์€ ์กฐ์‹ฌํžˆ ์‚ฌ์šฉํ•ฉ์‹œ๋‹ค  (0) 2026.01.11
RestAssured์˜ Jackson ๋ฒ„์ „ ํ˜ธํ™˜์„ฑ(feat. Spring Boot 4.0.0)  (0) 2025.11.30
Spring Boot ํ…Œ์ŠคํŠธ์—์„œ ์ปค๋„ฅ์…˜ ๊ณ ๊ฐˆ์ด ๋ฐœ์ƒํ•˜๋Š” ์ด์œ ์™€ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•  (1) 2025.11.17
QueryDSL์˜ hibernate ๋ฒ„์ „ ๋ถˆ์ผ์น˜๋กœ ์ธํ•œ ์˜ˆ์™ธ ๋ฐœ์ƒ  (0) 2025.11.02
'๊ฐœ๋ฐœ/๊ธฐ์ˆ ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • ๋”ฐ๋‹ฅ ํด๋ฆญ๋งŒ ๋ง‰์œผ๋ฉด ๋๋‚  ์ค„ ์•Œ์•˜์Šต๋‹ˆ๋‹ค
  • ์ง€์—ฐ๋กœ๋”ฉ์€ ์กฐ์‹ฌํžˆ ์‚ฌ์šฉํ•ฉ์‹œ๋‹ค
  • RestAssured์˜ Jackson ๋ฒ„์ „ ํ˜ธํ™˜์„ฑ(feat. Spring Boot 4.0.0)
  • Spring Boot ํ…Œ์ŠคํŠธ์—์„œ ์ปค๋„ฅ์…˜ ๊ณ ๊ฐˆ์ด ๋ฐœ์ƒํ•˜๋Š” ์ด์œ ์™€ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•
.๋„๊ธฐ
.๋„๊ธฐ
๐Ÿฅ ๐Ÿ’ป https://github.com/dye0p
  • .๋„๊ธฐ
    ๐Ÿฅ
    .๋„๊ธฐ
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (24)
      • ๊ฐœ๋ฐœ (23)
        • ๊ธฐ์ˆ  (13)
        • ์šฐ์•„ํ•œํ…Œํฌ์ฝ”์Šค (10)
      • ์ผ์ƒ (1)
        • ์ฑ… (0)
  • ๋งํฌ

    • github
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
    • ๊ธ€์“ฐ๊ธฐ
    • ํƒœ๊ทธ
    • ๋ฐฉ๋ช…๋ก
  • ๊ณต์ง€์‚ฌํ•ญ

  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

    ํšŒ๊ณ 
    ์ตœ์ข… ํ•ฉ๊ฒฉ
    ๋”ฐ๋‹ฅ ์ด์Šˆ
    Persistenct Context
    7๊ธฐ
    ๋ฐฑ์—”๋“œ
    Spring Context Caching
    ์šฐ์•„ํ•œํ…Œํฌ์ฝ”์Šค
    JPA
    java
    ์šฐ์•„ํ•œ ํ…Œํฌ์ฝ”์Šค
    db
    Hibernate
    ๊ธ€์“ฐ๊ธฐ ๋ฏธ์…˜
    ์˜์†์„ฑ ์ปจํ…์ŠคํŠธ
    ์ž๋ฐ”
    mysql
    ์šฐํ…Œ์ฝ”
    ์ตœ์ข… ์ฝ”๋”ฉํ…Œ์ŠคํŠธ
    spring
  • ์ตœ๊ทผ ๋Œ“๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.0
.๋„๊ธฐ
์›น์†Œ์ผ“ ์—ฐ๊ฒฐ์—์„œ ์ฟ ํ‚ค๊ฐ€ ์—†์–ด ๋ณด์˜€๋˜ ์ด์œ 
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”