๊ด€๋ฆฌ ๋ฉ”๋‰ด

๋ชฉ๋ก๐ŸŒฑSPRING (31)

Coding Planet

Spring Boot Dev Tools - ํ™˜๊ฒฝ์„ค์ •ํ•˜๊ธฐ(IntelliJ)

์Šคํ”„๋ง๋ถ€ํŠธ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ ๊ณผ์ •์—์„œ ๋งŒ์•ฝ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•œ๋‹ค๋ฉด ์ด ์ˆ˜์ •๋œ ์ƒํ™ฉ์„ ์ ์šฉํ•˜๊ธฐ ์œ„ํ•ด ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋‹ค์‹œ ์‹คํ–‰ํ•ด์•ผํ•œ๋‹ค. Spring Boot Dev Tools๋Š” ์†Œ์Šค ์ฝ”๋“œ๊ฐ€ ์ˆ˜์ •๋  ๊ฒฝ์šฐ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ž๋™์œผ๋กœ ๋‹ค์‹œ ์‹œ์ž‘ํ•ด์ค€๋‹ค. | Spring Boot Dev Tools ํ™˜๊ฒฝ์„ค์ • pom.xml์— ์•„๋ž˜์™€ ๊ฐ™์ด dependency๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด ๋œ๋‹ค. ๊ทธ ์™ธ์— ๋‹ค๋ฅธ ์ถ”๊ฐ€์ ์ธ ์ฝ”๋“œ๋Š” ํ•„์š”์—†๋‹ค. ๋‹ค๋งŒ IDE๋กœ IntelliJ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ์ถ”๊ฐ€์ ์ธ ํ™˜๊ฒฝ ์„ค์ •์ด ํ•„์š”ํ•˜๋‹ค. org.springframework.boot spring-boot-devtools | Spring Boot Dev Tools ํ™˜๊ฒฝ์„ค์ • IntelliJ Community์˜ ๊ฒฝ์šฐ DevTools๋ฅผ ๊ธฐ๋ณธ์œผ๋กœ ์ œ๊ณตํ•˜์ง€๋Š” ์•Š๋Š”๋‹ค. Prefere..

๐ŸŒฑSPRING 2023. 8. 18. 17:47
jar๋กœ ํŒจํ‚ค์ง•๋œ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์— src/main/webapp ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์“ฐ์ง€ ๋ง๋ผ๋Š” ์ด์œ 

`src/main/webapp` ๋””๋ ‰ํ† ๋ฆฌ๋Š” ์ „ํ†ต์ ์œผ๋กœ WAR ํฌ๋งท์˜ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์œ„ํ•œ ๋””๋ ‰ํ† ๋ฆฌ ๊ตฌ์กฐ์ด๋‹ค. WAR (Web Application aRchive) ํŒŒ์ผ์€ ์„œ๋ธ”๋ฆฟ ์ปจํ…Œ์ด๋„ˆ๋‚˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„ (์˜ˆ: Tomcat, Jetty, WildFly, GlassFish ๋“ฑ)์—์„œ ์‹คํ–‰๋  ์ˆ˜ ์žˆ๋Š” ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ํŒจํ‚ค์ง•ํ•˜๊ธฐ ์œ„ํ•œ ํฌ๋งท์ด๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์Šคํ”„๋ง ๋ถ€ํŠธ์™€ ๊ฐ™์€ ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ๋Š” ๋‚ด์žฅ๋œ ์„œ๋ธ”๋ฆฟ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ JAR ํŒŒ์ผ๋กœ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ํŒจํ‚ค์ง•ํ•˜๊ณ  ์‹คํ–‰ํ•˜๋Š” ๋ฐฉ์‹์ด ์ธ๊ธฐ๋ฅผ ์–ป๊ณ  ์žˆ๋‹ค. ์ด๋Ÿฐ ๊ฒฝ์šฐ, JAR๋กœ ํŒจํ‚ค์ง•๋œ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ `src/main/webapp` ๋””๋ ‰ํ† ๋ฆฌ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ด์œ ๋กœ ๊ถŒ์žฅ๋˜์ง€ ์•Š๋Š”๋‹ค 1. ๋ฆฌ์†Œ์Šค ๋กœ๋”ฉ JAR ํŒŒ์ผ ๋‚ด์—์„œ `src/main/webapp`์˜ ๋ฆฌ์†Œ์Šค๋Š” ์ „..

๐ŸŒฑSPRING 2023. 8. 17. 17:23
[์Šคํ”„๋ง ์ž…๋ฌธ] ์Šคํ”„๋ง ์›น ๊ฐœ๋ฐœ ๊ธฐ์ดˆ- ์ •์  ์ปจํ…์ธ , MVC2 ํŒจํ„ด๊ณผ ํ…œํ”Œ๋ฆฟ ์—”์ง„, API

[ ์ •์  ์ปจํ…์ธ  ] ์Šคํ”„๋ง(Spring)์—์„œ ์ •์  ์ปจํ…์ธ (static content)๋ž€, ๋™์ ์œผ๋กœ ์ƒ์„ฑ๋˜์ง€ ์•Š๊ณ  ๊ณ ์ •๋œ ํŒŒ์ผ๋กœ์„œ ์„œ๋ฒ„์—์„œ ๊ทธ๋Œ€๋กœ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์ „๋‹ฌ๋˜๋Š” ์›น ๋ฆฌ์†Œ์Šค๋ฅผ ๋งํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ •์  ์ปจํ…์ธ ๋Š” ๋ณดํ†ต HTML, CSS, JavaScript, ์ด๋ฏธ์ง€ ํŒŒ์ผ ๋“ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ •์  ์ปจํ…์ธ ๋Š” ์„œ๋ฒ„ ์ธก์—์„œ ๋”ฐ๋กœ ์ฒ˜๋ฆฌ๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ์›น ์„œ๋ฒ„(์˜ˆ: Apache, Nginx)๋ฅผ ํ†ตํ•ด ์ง์ ‘ ์ œ๊ณต๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์Šคํ”„๋ง ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์ •์  ์ปจํ…์ธ ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ, ์Šคํ”„๋ง์€ ๋‚ด์žฅ ์›น ์„œ๋ฒ„(์˜ˆ: Tomcat, Jetty)๋ฅผ ํ†ตํ•ด ์ •์  ๋ฆฌ์†Œ์Šค๋ฅผ ์ œ๊ณตํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์Šคํ”„๋ง์—์„œ ์ •์  ์ปจํ…์ธ ๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด, ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ •์  ๋ฆฌ์†Œ์Šค ๋””๋ ‰ํ† ๋ฆฌ์— ํ•ด๋‹น ํŒŒ์ผ๋“ค์„ ์ €์žฅํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์Šคํ”„๋ง ๋ถ€ํŠธ(Spring B..

๐ŸŒฑSPRING 2023. 7. 28. 00:00
๋กœ๊ทธ ๋ ˆ๋ฒจ(Log level)์ด๋ž€? ๋กœ๊ทธ๋ ˆ๋ฒจ ์„ค์ •ํ•˜๊ธฐ

1. ๋กœ๊ทธ ๋ ˆ๋ฒจ(Log level)์ด๋ž€?๋กœ๊ทธ ๋ ˆ๋ฒจ(Log Level)์€ ๋กœ๊ทธ ๋ฉ”์‹œ์ง€์˜ ์ค‘์š”๋„๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ˆ˜์ค€์„ ์˜๋ฏธํ•œ๋‹ค.๋กœ๊ทธ ๋ ˆ๋ฒจ์€ ๋กœ๊น… ์‹œ์Šคํ…œ์—์„œ ์‚ฌ์šฉ๋˜๋ฉฐ, ๋กœ๊ทธ ๋ฉ”์‹œ์ง€์˜ ์ค‘์š”๋„์— ๋”ฐ๋ผ ํ•ด๋‹น ๋ฉ”์‹œ์ง€๋ฅผ ๊ธฐ๋กํ• ์ง€ ๊ฒฐ์ •ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋œ๋‹ค.  2. ๋กœ๊ทธ๋ ˆ๋ฒจ 1) TRACE๊ฐ€์žฅ ์ƒ์„ธํ•œ ๋กœ๊ทธ ๋ ˆ๋ฒจ๋กœ, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์‹คํ–‰ ํ๋ฆ„๊ณผ ๋””๋ฒ„๊น… ์ •๋ณด๋ฅผ ์ƒ์„ธํžˆ ๊ธฐ๋กํ•œ๋‹ค. ์ฃผ๋กœ ๋””๋ฒ„๊น… ์‹œ์— ์‚ฌ์šฉ๋œ๋‹ค.2) DEBUG๋””๋ฒ„๊น… ๋ชฉ์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๋ฉฐ, ๊ฐœ๋ฐœ ๋‹จ๊ณ„์—์„œ ์ƒ์„ธํ•œ ์ •๋ณด๋ฅผ ๊ธฐ๋กํ•œ๋‹ค.์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋‚ด๋ถ€ ๋™์ž‘์„ ์ดํ•ดํ•˜๊ณ  ๋ฌธ์ œ๋ฅผ ๋ถ„์„ํ•˜๋Š” ๋ฐ ๋„์›€์„ ์ค€๋‹ค.3) INFO์ •๋ณด์„ฑ ๋ฉ”์‹œ์ง€๋ฅผ ๊ธฐ๋กํ•œ๋‹ค.์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ฃผ์š” ์ด๋ฒคํŠธ๋‚˜ ์‹คํ–‰ ์ƒํƒœ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์ „๋‹ฌํ•œ๋‹ค. 4) WARN๊ฒฝ๊ณ ์„ฑ ๋ฉ”์‹œ์ง€๋ฅผ ๊ธฐ๋กํ•œ๋‹ค.์˜ˆ์ƒ์น˜ ๋ชปํ•œ ๋ฌธ์ œ๋‚˜ ์ž ์žฌ์ ์ธ ์˜ค๋ฅ˜ ์ƒํ™ฉ์„ ์•Œ๋ฆฌ๋Š” ..

๐ŸŒฑSPRING 2023. 5. 18. 21:45
๋ฉ€ํ‹ฐํŒŒํŠธ(Multipart)๋ž€? Multipart ์ „์†ก๊ณผ MultipartResolver ๋ฅผ ํ†ตํ•œ ์š”์ฒญ ์ฒ˜๋ฆฌ

1. ๋ฉ€ํ‹ฐํŒŒํŠธ(Multipart)๋ž€?๋ฉ€ํ‹ฐํŒŒํŠธ๋Š” ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ๊ฐ„์— ์ „์†ก๋˜๋Š” HTTP ์š”์ฒญ ๋˜๋Š” ์‘๋‹ต์—์„œ ์—ฌ๋Ÿฌ ์ข…๋ฅ˜์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋™์‹œ์— ์ „์†กํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” ๋ฐฉ์‹์ด๋‹ค.์ผ๋ฐ˜์ ์œผ๋กœ ํŒŒ์ผ ์—…๋กœ๋“œ์™€ ๊ด€๋ จ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๋Š”๋ฐ ์ฃผ๋กœ ์‚ฌ์šฉ๋œ๋‹ค.HTTP ํ”„๋กœํ† ์ฝœ์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ํ…์ŠคํŠธ ๊ธฐ๋ฐ˜์˜ ์š”์ฒญ๊ณผ ์‘๋‹ต์„ ์ฒ˜๋ฆฌํ•œ๋‹ค. ํ•˜์ง€๋งŒ ํŒŒ์ผ๊ณผ ๊ฐ™์€ ์ด์ง„ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•ด์•ผํ•  ๋•Œ๋Š” ์ด์ง„ ๋ฐ์ดํ„ฐ๋ฅผ ํ…์ŠคํŠธ ํ˜•์‹์œผ๋กœ ์ธ์ฝ”๋”ฉํ•˜๋Š” ๊ฒƒ์ด ๋น„ํšจ์œจ์ ์ด๊ณ  ์ œํ•œ์ด ์žˆ๋‹ค. ๋ฉ€ํ‹ฐํŒŒํŠธ๋Š” ์ด๋Ÿฌํ•œ ์ด์ง„ ๋ฐ์ดํ„ฐ๋ฅผ ์ธ์ฝ”๋”ฉํ•˜์ง€ ์•Š๊ณ  ์›๋ณธ ํ˜•์‹์œผ๋กœ ์ „์†กํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ค€๋‹ค.๋ฉ€ํ‹ฐํŒŒํŠธ ์š”์ฒญ์€ 'Content-Type' ํ—ค๋”์— 'multipart/form-data'๊ฐ’์„ ๊ฐ€์ง€๋ฉฐ ์—ฌ๋Ÿฌ๊ฐœ์˜ ํŒŒํŠธ(part)๋กœ ๊ตฌ์„ฑ๋œ๋‹ค. ๊ฐ ํŒŒํŠธ๋Š” ๊ฐœ๋ณ„์ ์ธ ๋ฐ์ดํ„ฐ ์กฐ๊ฐ์œผ๋กœ ํŒŒ์ผ์ด๋‚˜ ํ…์ŠคํŠธ ๋ฐ์ดํ„ฐ ..

๐ŸŒฑSPRING 2023. 5. 18. 21:19
Handler Mapping๊ณผ Request Mapping์ด๋ž€?

HANDLER MAPPING, REQUEST MAPPING ๋ชจ๋‘ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋˜๋Š” ๊ฐœ๋…์ด๋‹ค. ์ด ๋‘ ๊ฐœ๋…์€ Spring MVC์—์„œ ์ฃผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ๊ฐœ๋…์œผ๋กœ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๋Š”๋ฐ ์ค‘์š”ํ•œ ์—ญํ• ์„ ํ•œ๋‹ค. 1. Handler Mapping์ด๋ž€? Handler Mapping์€ ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•  ํ•ธ๋“ค๋Ÿฌ(Handler)๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ์—ญํ• ์„ ํ•œ๋‹ค. ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ๋‹ค์–‘ํ•œ ์š”์ฒญ์„ ๋ฐ›๊ฒŒ ๋˜๋Š”๋ฐ, Handler Mapping์€ ์ด๋Ÿฌํ•œ ์š”์ฒญ์— ๋Œ€ํ•ด ์–ด๋–ค ํ•ธ๋“ค๋Ÿฌ(์ปจํŠธ๋กค๋Ÿฌ)๊ฐ€ ์ฒ˜๋ฆฌํ•ด์•ผํ•˜๋Š”์ง€๋ฅผ ๊ฒฐ์ •ํ•œ๋‹ค. ํ•ธ๋“ค๋Ÿฌ ๋งคํ•‘์€ ์š”์ฒญ URL, ์š”์ฒญ ๋ฉ”์„œ๋“œ, ์š”์ฒญ ํ—ค๋” ๋“ฑ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ ์ ˆํ•œ ํ•ธ๋“ค๋Ÿฌ๋ฅผ ์„ ํƒํ•˜๊ณ  ๋งคํ•‘ํ•œ๋‹ค. Spring ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ๋Š” 'HandlerMapping' ์ธ..

๐ŸŒฑSPRING 2023. 5. 18. 20:29
AOP(Aspect-Oriented Programming)๋ž€? ์˜ˆ์‹œ ํฌํ•จ

1. AOP(Aspect-Oriented Programming)๋ž€? AOP(Aspect-Oriented Programming)๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํŒจ๋Ÿฌ๋‹ค์ž„ ์ค‘ ํ•˜๋‚˜๋กœ, ๊ด€์‹ฌ์‚ฌ์˜ ๋ถ„๋ฆฌ(Concern Separation)๋ฅผ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” ๊ธฐ์ˆ ์ด๋‹ค. AOP๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ํ•ต์‹ฌ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง๊ณผ ๊ด€๋ จ ์—†๋Š” ๋ถ€๊ฐ€์ ์ธ ๊ธฐ๋Šฅ๋“ค์„ ๋ชจ๋“ˆํ™”ํ•˜์—ฌ ์ฝ”๋“œ์˜ ์ค‘๋ณต์„ ์ค„์ด๊ณ  ์œ ์ง€๋ณด์ˆ˜์„ฑ์„ ํ–ฅ์ƒ์‹œํ‚ค๋Š” ๋ฐ์— ์ฃผ๋กœ ํ™œ์šฉ๋œ๋‹ค. AOP์—์„œ๋Š” ๋‹ค์–‘ํ•œ ๊ด€์ (Aspect)์„ ์ •์˜ํ•˜๊ณ , ์ด๋Ÿฌํ•œ ๊ด€์ ๋“ค์„ ํ•ต์‹ฌ ๋กœ์ง์— ์ ์šฉํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๋™์ž‘ํ•œ๋‹ค. Spring์—์„œ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ํด๋ž˜์Šค(Service, Dao ๋“ฑ)์—์„œ ์ค‘๋ณต๋˜๋Š” ๊ณตํ†ต ์ฝ”๋“œ ๋ถ€๋ถ„(commit, rollback, log์ฒ˜๋ฆฌ)์„ ๋ณ„๋„์˜ ์˜์—ญ์œผ๋กœ ๋ถ„๋ฆฌํ•ด ๋‚ด๊ณ , ์ฝ”๋“œ๊ฐ€ ์‹œํ–‰ ๋˜๊ธฐ ์ „์ด๋‚˜ ์ด ํ›„์˜ ์‹œ..

๐ŸŒฑSPRING 2023. 5. 18. 20:13