ํ๋ก์ ํธ ์์ฑ ์ ๋ง์ ์ค์ ์ด ํ์ํ๋ค.
ํผ์ ํ์ผ๋ก ์ฒซ ํ๋ก์ ํธ๋ฅผ ์์ฑํ์ ๋ ๋ช
ํํ๊ฒ ๋ชจ๋ฅด๊ณ ๋์ด๊ฐ๋ ๋ถ๋ถ๋ค์ด ๋ง์ ํฐ๋ผ ๊ฐ๋จํ ์ ๋ฆฌํด๋๊ณ ์ถ์ด์ ์ฐ๋ ๊ธ์ด๋ค.๐
์ธํ ๋ฆฌ์ ์ด์์ ์คํ๋ง ํ๋ก์ ํธ๋ฅผ ์์ฑํ ๊ฒฝ์ฐ ์ธํ ๋ฆฌ์ ์ด ์์์ Spring Initializr๋ฅผ ์ฌ์ฉํ ์ ์์ง๋ง ๋์ฒ๋ผ IntelliJ IDEA Community ๋ฒ์ ์ ์ฌ์ฉํ ๊ฒฝ์ฐ์๋ ๋ฐ๋ก ๋ด์ฅ๋์ด ์์ง ์๊ธฐ ๋๋ฌธ์ ์๋ ์ด๋ฏธ์ง์ฒ๋ผ ํด๋น ์ฌ์ดํธ์์ ์ง์ ์์ฑํ๋ฉด ๋๋ค. (๋ฒ๊ฑฐ๋ก์๐ข)
๐ท Spring Initializr ์ด๋ฏธ์ง
๐ ์ฃผ์: https://start.spring.io/
๋น๋ ํ์ ์ ์ค์ ํ๋ ๊ณณ์ด๋ค.
โ Maven
์๋ฐ ํ๋ก์ ํธ์ ๋น๋๋ฅผ ์๋ํํด์ฃผ๋ ๋น๋ ํด์ด๋ค. ์ฆ, ์๋ฐ ์์ค๋ฅผ ์ปดํ์ผํ๊ณ packageํด์ deploy ํ๋ ์ผ์ ์๋ํ ํด์ฃผ๋ ๊ฒ์ด๋ค.
๐จ ํ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํน์ ๋ฌธ์(pom.xml)์ ์ ์ํด์ฃผ๋ฉด ํด๋น ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฟ ์๋๋ผ ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์๋ํ๊ธฐ ์ํด ํ์ํ ๋ค๋ฅธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค๊น์ง ํจ๊ป ๋คํธ์ํฌ๋ฅผ ํตํด ์๋์ผ๋ก ๋ค์ด ๋ฐ์์ค๋ค.
๐จ ์ค์ ์ ์ฅ์๋ฅผ ํตํ์ฌ ์๋์ผ๋ก ์์กด์ฑ ๊ด๋ฆฌ๋ฅผ ํด์ค๋ค. ์ค์ ์ ์ฅ์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๊ณต์ ํ๋ ํ์ผ ์๋ฒ์ด๊ณ ์ ์ฅ์๋ ์ฌ๋จ์์ ์ด์ ๋ฐ ๊ด๋ฆฌํ๋ ์ ์ฅ์๋ฅผ ์ฌ์ฉํ๊ฑฐ๋ ๋ค๋ฅธ ์ฌ์ค ์ ์ฅ์๋ฅผ ์ฌ์ฉํ ์ ์๋ค.โ Gradle
Ant์ฒ๋ผ ๋งค์ฐ ์ ์ฐํ ๋ฒ์ฉ ๋น๋ ๋๊ตฌ์ด๋ฉด์ Maven์ฒ๋ผ ๊ตฌ์กฐํ ๋ ๊ทธ๋ฃจ๋น(Groovy)๋ฅผ ๊ธฐ๋ฐ์ DSL(Domain Specific Language)์ ์ฌ์ฉํ ๋น๋ ํด์ด๋ค.๐ ๊ทธ๋ฃจ๋น(Groovy)๋? XML์ธ์ด๊ฐ ์๋ JVM์์ ๋์ํ๋ ์คํฌ๋ฆฝํธ ์ธ์ด์ด๋ค.
๐จ Ant, Maven์ฒ๋ผ ๊ธฐ์กด์ ๋น๋ ํด์ xmlํ์์ ์ด์ฉํ์ฌ ์ ์ ์ธ ์ค์ ์ ๋ณด๋ฅผ ๊ตฌ์ฑํ๋๊ฒ ์๋๋ผ Groovy๋ผ๋ ์ธ์ด๋ฅผ ์ด์ฉํ์ฌ ์ฝ๋๋ก ์ค์ ์ ๋ณด๋ฅผ ๊ตฌ์ฑํ๋ค. ๋ฐ๋ผ์ ๊ฐ๊ฒฐํ๊ณ ๊ตฌ์กฐ์ ์ธ ์ฅ์ ์ด ์๋ค.
๐จ ํ๋ก์ ํธ๋ฅผ ์ค์ ์ฃผ์ ๋ฐฉ์์ผ๋ก ์ ์ํ๊ธฐ ๋๋ฌธ์ Maven์ ์์ ๊ตฌ์กฐ๋ณด๋ค ์ฌ์ฌ์ฉ์ ์ฉ์ดํ๋ค.
ํด๋น ํ๋ก์ ํธ์์ ์ฌ์ฉํ ์ธ์ด๋ฅผ ์ ํํ๋ ๊ณณ์ด๋ค.
์คํ๋ง ๋ถํธ ๋ฒ์ ์ ์ ํํ๋ ๊ณณ์ผ๋ก SNAPSHOT์ด ๋ถ์ ๊ฒ์ ํ์ฌ ๊ฐ๋ฐ์ค์ธ ๋ฒ์ , M(Minor)์ด ๋ถ์ ๊ฒ์ ์ ์ ๋ฆด๋ฆฌ์ฆ ๋์ง ์์ ๋ฒ์ ์ด๋ฏ๋ก ๋ฒ๊ทธ๊ฐ ์๊ธธ ์ ์๋ค.
๋ฐ๋ผ์ ํน๋ณํ ์ด์ ๊ฐ ์๋๋ผ๋ฉด ์ ์ ๋ฆด๋ฆฌ์ฆ ๋ ๋ฒ์ ์ค ๊ฐ์ฅ ์ต์ ๋ฒ์ ์ ์ ํํ๋ ๊ฒ์ด ์ข๋ค.๐
๐ ๋ง์ฝ ํ๋ฉด์ ๋ํ๋๋ ๋ฒ์ ์ธ์ ๋ค๋ฅธ ๋ฒ์ ์ ์ฌ์ฉํ๊ณ ์ถ๋ค๋ฉด,
ํ๋ก์ ํธ๋ฅผ ์์ฑ ํ ์ง์ ๋ณ๊ฒฝํด์ฃผ๋ฉด ๋๋ค.
ํด๋น ํ์ผ ํํ๋ก ํจํค์ง์ ํ์ฌ ์คํ๋ง ๋ถํธ๋ฅผ ๊ธฐ๋ํ๊ฒ ํ๋ ๊ฒ์ด๋ค.
Jar ํ์ผ๋ก ํจํค์ง ํ๊ฒ ๋๋ฉด ์๋ฐ๋ผ๋ ๋ช ๋ น์ด๋ก $java -jar [์์ฑํ ํจํค์ง๋ช ]์ ์ ๋ ฅํ๊ฒ ๋๋ฉด ํด๋น ์คํ๋ง๋ถํธ ์์ ๋ด์ฅ๋์ด ์๋ ํฐ์บฃ์๋ฒ๊ฐ ์๋ํ๋ฉด์ ์คํ๋ง ๋ถํธ๋ฅผ ๊ธฐ๋ํ๊ฒ ๋๋ค.
War ํ์ผ๋ก ํจํค์ง ํ๊ฒ ๋๋ฉด Servlet, JSP๊ฐ์ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ฒ๋ผ ์ฐ๋ฆฌ๊ฐ ํ์ํ๋ web.xml ๊ฐ์ ํํ๊ฐ ์น ํํ๋ก ๋ฐ๋๊ฒ ๋๋ค. ์ด ์ํ๋ ๋ด์ฅ ํฐ์บฃ์ ๊ฐ์ง๊ณ ์์ง ์๊ธฐ ๋๋ฌธ์ ์ธ๋ถ์ ์๋ ํฐ์บฃ์ด๋ ์ธ๋ถ์ ์๋ JBoss ๋ฑ ๋ค๋ฅธ ์น ์ ํ๋ฆฌ์ผ์ด์ ์๋ฒ์ ์ฐ๋ฆฌ๊ฐ ๋ง๋ ๋ง์ดํฌ๋ก์๋น์ค๋ฅผ ๋ฐฐํฌํ๋ ํํ๋ผ๊ณ ์๊ฐํ๋ฉด ๋๋ค.
dependency๋ฅผ ์ฐ๋ฆฌ๋๋ผ ๋ง๋ก ํด์ํ๋ฉด ์์กด์ด๋ผ๋ ๋ป์ด๋ค.
์ฆ, ํ๋ก์ ํธ์์ ์ฌ์ฉํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ Maven์ ์ฌ์ฉํ ๊ฒฝ์ฐ์๋ pom.xml์ dependency๋ก ์ ์ํด์ฃผ๊ณ , Gradle์ ์ฌ์ฉํ ๊ฒฝ์ฐ์๋ build.gradle๋ก ์ ์ํ์ฌ ์ฌ์ฉํ๋ค.
๐งฉ Maven(pom.xml) โ lombok ์ฃผ์ ์์
//lombok <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.12</version> <scope>provided</scope> </dependency>
๐งฉ Gradle(build.gradle) โ lombok ์ฃผ์ ์์
//lombok compileOnly group: 'org.projectlombok', name: 'lombok', version: '1.18.12'
๊ธฐ๋ณธ์ ์ธ ๋ถ๋ถ์ด์ง๋ง ์์๋๋ฉด ์ข์ผ๋ ์์๋์! ๐