๋ชฉ๋ก๐ฑSPRING (31)
Coding Planet
์คํ๋ง๋ถํธ ์ดํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ ๊ณผ์ ์์ ๋ง์ฝ ์์ค ์ฝ๋๋ฅผ ์์ ํ๋ค๋ฉด ์ด ์์ ๋ ์ํฉ์ ์ ์ฉํ๊ธฐ ์ํด ์ดํ๋ฆฌ์ผ์ด์ ์ ๋ค์ ์คํํด์ผํ๋ค. 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..
`src/main/webapp` ๋๋ ํ ๋ฆฌ๋ ์ ํต์ ์ผ๋ก WAR ํฌ๋งท์ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์ํ ๋๋ ํ ๋ฆฌ ๊ตฌ์กฐ์ด๋ค. WAR (Web Application aRchive) ํ์ผ์ ์๋ธ๋ฆฟ ์ปจํ ์ด๋๋ ์ ํ๋ฆฌ์ผ์ด์ ์๋ฒ (์: Tomcat, Jetty, WildFly, GlassFish ๋ฑ)์์ ์คํ๋ ์ ์๋ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ํจํค์งํ๊ธฐ ์ํ ํฌ๋งท์ด๋ค. ๊ทธ๋ฌ๋ ์คํ๋ง ๋ถํธ์ ๊ฐ์ ํ๋ ์์ํฌ์์๋ ๋ด์ฅ๋ ์๋ธ๋ฆฟ ์ปจํ ์ด๋๋ฅผ ์ฌ์ฉํ์ฌ JAR ํ์ผ๋ก ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ํจํค์งํ๊ณ ์คํํ๋ ๋ฐฉ์์ด ์ธ๊ธฐ๋ฅผ ์ป๊ณ ์๋ค. ์ด๋ฐ ๊ฒฝ์ฐ, JAR๋ก ํจํค์ง๋ ์น ์ ํ๋ฆฌ์ผ์ด์ ์์ `src/main/webapp` ๋๋ ํ ๋ฆฌ๋ ๋ค์๊ณผ ๊ฐ์ ์ด์ ๋ก ๊ถ์ฅ๋์ง ์๋๋ค 1. ๋ฆฌ์์ค ๋ก๋ฉ JAR ํ์ผ ๋ด์์ `src/main/webapp`์ ๋ฆฌ์์ค๋ ์ ..
| Maven Standard Directory Structure src/main/java :์๋ฐ ์์ค ์ฝ๋ ์ ์ฅ ๊ฒฝ๋ก src/main/resources : properties, config ๋ฑ์ ์ค์ ํ์ผ src/test/java : ์ ๋ ํ ์คํธ ์์ค ์ฝ๋ target : ํ๋ก์ ํธ ๋น๋ ๊ณผ์ ์์ ๋ฐ์ํ๋ ๋ชจ๋ ์ถ๋ ฅ๋ฌผ๊ณผ ์ค๊ฐ ํ์ผ์ ์ ์ฅํ๋ ๋๋ ํ ๋ฆฌ ex) ์ปดํ์ผ๋ ํด๋์ค ํ์ผ, ํจํค์ง๋ ์ํฐํฉํธ, ํ ์คํธ ๊ฒฐ๊ณผ, ๋ฌธ์ํ ๋ฑ ** ์ฐธ๊ณ (jar๋ก ํจํค์ง๋ ์ดํ๋ฆฌ์ผ์ด์ ์ src/main/webapp ๋๋ ํ ๋ฆฌ๋ฅผ ์ฐ์ง ๋ง๋ผ๋ ์ด์ ) https://sharonprogress.tistory.com/228) | Maven Wrapper files mvnw : Maven Wrapper์ ์ผ๋ถ์ด๋ค. ์ด ๊ธฐ๋ฅ์ ์ฌ์ฉ์๊ฐ ํน์ ..
| What is Maven? Maven is a Project Management tool Most popular use of Maven is for build management and dependencies | What Problems Does Maven Solve? When building your Java project, you may need additional Jar files For example: Spring, Hibernate, Commons Logging, JSON etc., One approach is to download the JAR files each project web site. Manually add the JAR files to your build path / class..
ํํ๋กญ๊ฒ(?) ํ ์ด ํ์ ํ๋ ๋์ค spring boot ๋ก๊ทธ ํ๊ธ ๊นจ์ง ๋ฐ์..! Ctrl+Shift+A ๋ก ์ก์ ์ผ์ edit vm ์น๊ณ Edit Custom VM Options๋ก ๊ฐ๊ธฐ -Dfile.encoding=UTF-8 ๋ณต๋ถ ใฑใฑ ์ธํ ๋ฆฌ์ ์ด ๊ป๋ค ํค์ผ...! ๐ํด๊ฒฐ !
[ ์ ์ ์ปจํ ์ธ ] ์คํ๋ง(Spring)์์ ์ ์ ์ปจํ ์ธ (static content)๋, ๋์ ์ผ๋ก ์์ฑ๋์ง ์๊ณ ๊ณ ์ ๋ ํ์ผ๋ก์ ์๋ฒ์์ ๊ทธ๋๋ก ํด๋ผ์ด์ธํธ์๊ฒ ์ ๋ฌ๋๋ ์น ๋ฆฌ์์ค๋ฅผ ๋งํฉ๋๋ค. ์ด๋ฌํ ์ ์ ์ปจํ ์ธ ๋ ๋ณดํต HTML, CSS, JavaScript, ์ด๋ฏธ์ง ํ์ผ ๋ฑ์ด ์์ต๋๋ค. ์ ์ ์ปจํ ์ธ ๋ ์๋ฒ ์ธก์์ ๋ฐ๋ก ์ฒ๋ฆฌ๊ฐ ํ์ํ์ง ์์ผ๋ฏ๋ก ์น ์๋ฒ(์: Apache, Nginx)๋ฅผ ํตํด ์ง์ ์ ๊ณต๋ ์ ์์ต๋๋ค. ์คํ๋ง ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ ์ ์ปจํ ์ธ ๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ, ์คํ๋ง์ ๋ด์ฅ ์น ์๋ฒ(์: Tomcat, Jetty)๋ฅผ ํตํด ์ ์ ๋ฆฌ์์ค๋ฅผ ์ ๊ณตํ ์๋ ์์ต๋๋ค. ์คํ๋ง์์ ์ ์ ์ปจํ ์ธ ๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด, ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ์ ๋ฆฌ์์ค ๋๋ ํ ๋ฆฌ์ ํด๋น ํ์ผ๋ค์ ์ ์ฅํ๋ฉด ๋ฉ๋๋ค. ์คํ๋ง ๋ถํธ(Spring B..
1. ๋ก๊ทธ ๋ ๋ฒจ(Log level)์ด๋?๋ก๊ทธ ๋ ๋ฒจ(Log Level)์ ๋ก๊ทธ ๋ฉ์์ง์ ์ค์๋๋ฅผ ๋ํ๋ด๋ ์์ค์ ์๋ฏธํ๋ค.๋ก๊ทธ ๋ ๋ฒจ์ ๋ก๊น ์์คํ ์์ ์ฌ์ฉ๋๋ฉฐ, ๋ก๊ทธ ๋ฉ์์ง์ ์ค์๋์ ๋ฐ๋ผ ํด๋น ๋ฉ์์ง๋ฅผ ๊ธฐ๋กํ ์ง ๊ฒฐ์ ํ๋ ๋ฐ ์ฌ์ฉ๋๋ค. 2. ๋ก๊ทธ๋ ๋ฒจ 1) TRACE๊ฐ์ฅ ์์ธํ ๋ก๊ทธ ๋ ๋ฒจ๋ก, ์ ํ๋ฆฌ์ผ์ด์ ์ ์คํ ํ๋ฆ๊ณผ ๋๋ฒ๊น ์ ๋ณด๋ฅผ ์์ธํ ๊ธฐ๋กํ๋ค. ์ฃผ๋ก ๋๋ฒ๊น ์์ ์ฌ์ฉ๋๋ค.2) DEBUG๋๋ฒ๊น ๋ชฉ์ ์ผ๋ก ์ฌ์ฉ๋๋ฉฐ, ๊ฐ๋ฐ ๋จ๊ณ์์ ์์ธํ ์ ๋ณด๋ฅผ ๊ธฐ๋กํ๋ค.์ ํ๋ฆฌ์ผ์ด์ ์ ๋ด๋ถ ๋์์ ์ดํดํ๊ณ ๋ฌธ์ ๋ฅผ ๋ถ์ํ๋ ๋ฐ ๋์์ ์ค๋ค.3) INFO์ ๋ณด์ฑ ๋ฉ์์ง๋ฅผ ๊ธฐ๋กํ๋ค.์ ํ๋ฆฌ์ผ์ด์ ์ ์ฃผ์ ์ด๋ฒคํธ๋ ์คํ ์ํ์ ๋ํ ์ ๋ณด๋ฅผ ์ ๋ฌํ๋ค. 4) WARN๊ฒฝ๊ณ ์ฑ ๋ฉ์์ง๋ฅผ ๊ธฐ๋กํ๋ค.์์์น ๋ชปํ ๋ฌธ์ ๋ ์ ์ฌ์ ์ธ ์ค๋ฅ ์ํฉ์ ์๋ฆฌ๋ ..
1. ๋ฉํฐํํธ(Multipart)๋?๋ฉํฐํํธ๋ ํด๋ผ์ด์ธํธ์ ์๋ฒ ๊ฐ์ ์ ์ก๋๋ HTTP ์์ฒญ ๋๋ ์๋ต์์ ์ฌ๋ฌ ์ข ๋ฅ์ ๋ฐ์ดํฐ๋ฅผ ๋์์ ์ ์กํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ ๋ฐฉ์์ด๋ค.์ผ๋ฐ์ ์ผ๋ก ํ์ผ ์ ๋ก๋์ ๊ด๋ จ๋ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๋๋ฐ ์ฃผ๋ก ์ฌ์ฉ๋๋ค.HTTP ํ๋กํ ์ฝ์ ๊ธฐ๋ณธ์ ์ผ๋ก ํ ์คํธ ๊ธฐ๋ฐ์ ์์ฒญ๊ณผ ์๋ต์ ์ฒ๋ฆฌํ๋ค. ํ์ง๋ง ํ์ผ๊ณผ ๊ฐ์ ์ด์ง ๋ฐ์ดํฐ๋ฅผ ์ ์กํด์ผํ ๋๋ ์ด์ง ๋ฐ์ดํฐ๋ฅผ ํ ์คํธ ํ์์ผ๋ก ์ธ์ฝ๋ฉํ๋ ๊ฒ์ด ๋นํจ์จ์ ์ด๊ณ ์ ํ์ด ์๋ค. ๋ฉํฐํํธ๋ ์ด๋ฌํ ์ด์ง ๋ฐ์ดํฐ๋ฅผ ์ธ์ฝ๋ฉํ์ง ์๊ณ ์๋ณธ ํ์์ผ๋ก ์ ์กํ ์ ์๋๋ก ํด์ค๋ค.๋ฉํฐํํธ ์์ฒญ์ 'Content-Type' ํค๋์ 'multipart/form-data'๊ฐ์ ๊ฐ์ง๋ฉฐ ์ฌ๋ฌ๊ฐ์ ํํธ(part)๋ก ๊ตฌ์ฑ๋๋ค. ๊ฐ ํํธ๋ ๊ฐ๋ณ์ ์ธ ๋ฐ์ดํฐ ์กฐ๊ฐ์ผ๋ก ํ์ผ์ด๋ ํ ์คํธ ๋ฐ์ดํฐ ..
HANDLER MAPPING, REQUEST MAPPING ๋ชจ๋ ์น ์ ํ๋ฆฌ์ผ์ด์ ์์ ์์ฒญ์ ์ฒ๋ฆฌํ๋๋ฐ ์ฌ์ฉ๋๋ ๊ฐ๋ ์ด๋ค. ์ด ๋ ๊ฐ๋ ์ Spring MVC์์ ์ฃผ๋ก ์ฌ์ฉ๋๋ ๊ฐ๋ ์ผ๋ก ์น ์ ํ๋ฆฌ์ผ์ด์ ์์ ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ์ฒ๋ฆฌํ๋๋ฐ ์ค์ํ ์ญํ ์ ํ๋ค. 1. Handler Mapping์ด๋? Handler Mapping์ ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ์ฒ๋ฆฌํ ํธ๋ค๋ฌ(Handler)๋ฅผ ๊ฒฐ์ ํ๋ ์ญํ ์ ํ๋ค. ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ค์ํ ์์ฒญ์ ๋ฐ๊ฒ ๋๋๋ฐ, Handler Mapping์ ์ด๋ฌํ ์์ฒญ์ ๋ํด ์ด๋ค ํธ๋ค๋ฌ(์ปจํธ๋กค๋ฌ)๊ฐ ์ฒ๋ฆฌํด์ผํ๋์ง๋ฅผ ๊ฒฐ์ ํ๋ค. ํธ๋ค๋ฌ ๋งคํ์ ์์ฒญ URL, ์์ฒญ ๋ฉ์๋, ์์ฒญ ํค๋ ๋ฑ์ ๊ธฐ๋ฐ์ผ๋ก ์ ์ ํ ํธ๋ค๋ฌ๋ฅผ ์ ํํ๊ณ ๋งคํํ๋ค. Spring ํ๋ ์์ํฌ์์๋ 'HandlerMapping' ์ธ..
1. AOP(Aspect-Oriented Programming)๋? AOP(Aspect-Oriented Programming)๋ ํ๋ก๊ทธ๋๋ฐ ํจ๋ฌ๋ค์ ์ค ํ๋๋ก, ๊ด์ฌ์ฌ์ ๋ถ๋ฆฌ(Concern Separation)๋ฅผ ์ํด ์ฌ์ฉ๋๋ ๊ธฐ์ ์ด๋ค. AOP๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ํต์ฌ ๋น์ฆ๋์ค ๋ก์ง๊ณผ ๊ด๋ จ ์๋ ๋ถ๊ฐ์ ์ธ ๊ธฐ๋ฅ๋ค์ ๋ชจ๋ํํ์ฌ ์ฝ๋์ ์ค๋ณต์ ์ค์ด๊ณ ์ ์ง๋ณด์์ฑ์ ํฅ์์ํค๋ ๋ฐ์ ์ฃผ๋ก ํ์ฉ๋๋ค. AOP์์๋ ๋ค์ํ ๊ด์ (Aspect)์ ์ ์ํ๊ณ , ์ด๋ฌํ ๊ด์ ๋ค์ ํต์ฌ ๋ก์ง์ ์ ์ฉํ๋ ๋ฐฉ์์ผ๋ก ๋์ํ๋ค. Spring์์๋ ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉํ๋ ํด๋์ค(Service, Dao ๋ฑ)์์ ์ค๋ณต๋๋ ๊ณตํต ์ฝ๋ ๋ถ๋ถ(commit, rollback, log์ฒ๋ฆฌ)์ ๋ณ๋์ ์์ญ์ผ๋ก ๋ถ๋ฆฌํด ๋ด๊ณ , ์ฝ๋๊ฐ ์ํ ๋๊ธฐ ์ ์ด๋ ์ด ํ์ ์..