๐ก ๋ณธ ๋ฌธ์๋ 'Intellij Springboot ๊ฐ๋ฐํ๊ฒฝ ์ค์ '์ ๋ํด ์ ๋ฆฌํด๋์ ๊ธ์ ๋๋ค.
Springboot๋ฅผ ์ฌ์ฉํ ๋ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉํ๋ IDE์ธ Intellij๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ๋ฐํ๊ฒฝ์ ์ค์ ํ๋ ๋ฐฉ๋ฒ์ ๋ํด ์ ๋ฆฌํ์์ผ๋ ์ฐธ๊ณ ํ์๊ธฐ ๋ฐ๋๋๋ค.
1. Springboot ํ๋ก์ ํธ ์์ฑ
Springboot ํ๋ก์ ํธ ์์ฑ ๋ฐฉ๋ฒ์ ํฌ๊ฒ ๋๊ฐ์ง๊ฐ ์์ต๋๋ค.
- (IntelliJ IDEA CE)spring initializr ์นํ์ด์ง๋ฅผ ํตํด ํ๋ก์ ํธ๋ฅผ ์์ฑํ๋ ๋ฐฉ๋ฒ
- IntelliJ IDEA์์ ํ๋ก์ ํธ๋ฅผ ์์ฑํ๋ ๋ฐฉ๋ฒ
1.1 spring initializr ์นํ์ด์ง๋ฅผ ํตํด ํ๋ก์ ํธ๋ฅผ ์์ฑํ๋ ๋ฐฉ๋ฒ
์ ์ฃผ์์ ์ฌ์ดํธ๋ก ์ด๋ํฉ๋๋ค. ์คํ๋ง์์ ์ด์ํ๋ ์คํ๋ง๋ถํธ ํ๋ก์ ํธ๋ฅผ ์ฝ๊ฒ ๋ง๋ค์ ์๋๋ก ๋์์ฃผ๋ ์ฌ์ดํธ์ ๋๋ค.
์ฌ์ดํธ๋ก ์ด๋ํ๊ฒ ๋๋ฉด ์์ ๊ฐ์ ํ๋ฉด์ด ๋์ค๊ฒ ๋ฉ๋๋ค.
์ผ์ชฝ ์๋จ๋ถํฐ ์ค๋ช ๋๋ฆฌ๋ฉด
Project๋ ํ๋ก์ ํธ ๊ด๋ฆฌ ํด์ ๋งํฉ๋๋ค.
Maven๊ณผ Gradle์ด ์๋๋ฐ, ์ด๋ณด์๋ผ๋ฉด Gradle๋ก ํ๋ ๊ฒ์ ์ถ์ฒ๋๋ฆฝ๋๋ค. ์ต๊ทผ์๋ Maven๋ณด๋ค๋ Gradle๋ก ๋ง์ด ์ฌ์ฉ๋๋ค๊ณ ํฉ๋๋ค.
Language๋ ๊ฐ๋ฐ ์ธ์ด์ ๋๋ค.
Java, Kotlin, Groovy ์ธ ๊ฐ์ ์ธ์ด ์ค ์ฌ์ฉํ์ค ์ธ์ด๋ฅผ ๊ณ ๋ฅด์๋ฉด ๋ฉ๋๋ค.
Springboot ๋ฒ์
๋ฒ์ ๋ค์ ๊ดํธ๊ฐ ์๋ ๊ฒ์ ๊ฐ๋ฐ์ค์ด๋ ์์ง ๋ถ์์ ํ ๋ฒ์ ์ผ๋ก, ๋ฒ์ ๋ค์ ๊ดํธ๊ฐ ์๋ ๊ฒ๋ค ์ค ๊ฐ์ฅ ์ต์ ๋ฒ์ ์ ๊ณ ๋ฆ ๋๋ค. ์ ์ฌ์ง์์๋ 2.5.0์ด ์ ํ๋์ด ์์ต๋๋ค.
Projcet Metadata
Group์ ๋ณดํต ๊ธฐ์
๋ช
์ ์ ์ต๋๋ค.
Artifact๋ ๋น๋ ๊ฒฐ๊ณผ๋ฌผ์ ์ด๋ฆ์ ์๋ฏธํฉ๋๋ค.
๊ทธ ์ธ์ description์ด๋ Package name์ ํ์์ ์์ ํฉ๋๋ค.
๋งจ ์๋์ ์์ ์ Java ๋ฒ์ ๋ํ ์ค์ ํฉ๋๋ค.
Dependencies
ํ์ด์ง์ ์ฐ์ธก์ ์กด์ฌํ๋ ํ๋ก์ ํธ์ ์์กด์ฑ ์ค์ ์
๋๋ค. ํ๋ก์ ํธ์์ ์ฌ์ฉํ๊ณ ์ ํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ฏธ๋ฆฌ ์ ์ํ๋ ๊ฒ์
๋๋ค.
์ค๋ฅธ์ชฝ ADD DEPENDENCIES... ๋ฒํผ์ ๋๋ฌ ์ถ๊ฐํ๊ณ ์ ํ๋ dependency๋ฅผ ์ถ๊ฐํฉ๋๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก ์น ํ๋ก์ ํธ๋ฅผ ๋ง๋ ๋ค๊ณ ํ๋ค๋ฉด Spring Web์ ํ์์ ์ผ๋ก ์ถ๊ฐํด์ผ ํฉ๋๋ค.
๊ธฐ๋ณธ์ ์ธ dependencies๋ ์ด๊ณณ์์ ์กฐ๊ธ ๋ ํ์ธ์ด ๊ฐ๋ฅํฉ๋๋ค. ๋ชจ๋ ๊ฒ ๋ค ์๋๊ฑด ์๋.
๋ค ์ค์ ํ๋ฉด ์๋ ๋น์ทํ๊ฒ ๋์ฌ ๊ฒ๋๋ค. ์ด์ ์๋์ GENERATE ๋ฒํผ์ ๋๋ฌ์ ๋ค์ด๋ฐ์ต๋๋ค. ๋ค์ด๋ฐ์ ํ์ผ์ ์ํ๋ ์์น๋ก ์ฎ๊ธด ํ์ ์์ถ์ ํ๋๋ค. ๊ทธ ํ์ intelliJ๋ฅผ ์คํํฉ๋๋ค.
์ ๊ฐ ์ฌ์ฉํ๋ ๊ธฐ๋ณธ์ ์ธ Dependency๋ ๋ค์๊ณผ ๊ฐ์ผ๋ฉฐ, ์๋์ ๋งํฌ๋ฅผ ํด๋ฆญํ์ฌ ์ธํ ๊ฐ์ ํ์ธํ ์ ์์ต๋๋ค.
- Spring Boot DevTools, Lombok, Spring Web, Spring Security, Spring Data JPA, MariaDB Driver...
- https://start.spring.io/#!type=gradle-project&language=java&platformVersion=2.7.8&packaging=jar&jvmVersion=11&groupId=com.example&artifactId=demo&name=demo&description=Demo%20project%20for%20Spring%20Boot&packageName=com.example.demo&dependencies=devtools,lombok,web,security,data-jpa,mariadb
์ฒ์ ์คํํ๋ฉด ์์ ๊ฐ์ ํ๋ฉด์ด ๋์ค๊ณ Open๋ฒํผ์ ๋๋ฆ
๋๋ค.
์ด์ ์ ํ
๋ง๋ฅผ ์ฌ์ฉํ๋ ํฐ๋ผ ์คํ ํ๋ฉด์ด ์กฐ๊ธ ๋ค๋ฅด๊ฒ ๋์ฌ ์ ์์ต๋๋ค. ๊ทธ๋๋ Open ๋๋ Import ๋ฒํผ์ ์์๊ฒ๋๋ค.
์์ถ์ ํผ ์์น๋ก ๊ฐ ์์ถ์ ํผ ๋๋ ํ ๋ฆฌ ๋ฐ๋ก ์๋์ ์๋ build.gradle์ ์ ํํ๊ณ Open์ ๋๋ฆ ๋๋ค.
์์ ๊ฐ์ด ๋ฌผ์ด๋ณผ ์ ๋ ์๋๋ฐ, ๊ทธ๋ผ ๊ฐ๊ฐ Open as Project, Trust Project๋ฅผ ๋๋ฅด๋ฉด ๋ฉ๋๋ค. ๊ทธ๋ผ ํ๋ก์ ํธ ์์ฑ์ ๋ชจ๋ ๋๋ฌ๊ณ , ํ๋ก์ ํธ์ ํ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ ๋ชจ๋ ๋ค์ด๋ก๋ํ ๋ ๊น์ง ๊ธฐ๋ค๋ฆฌ๋ฉด ๋ฉ๋๋ค.
1.2 IntelliJ IDEA์์ ํ๋ก์ ํธ๋ฅผ ์์ฑํ๋ ๋ฐฉ๋ฒ
์ด ๋ฐฉ๋ฒ ๋ํ ์์์ ์ค๋ช ํ ์นํ์ด์ง๋ฅผ ํตํด ๋ง๋๋ ๋ฐฉ๋ฒ๊ณผ ๋ง์ด ๋ค๋ฅด์ง ์์ต๋๋ค.
์ผ๋จ ๋งจ ์ฒ์ ์ธํ ๋ฆฌ์ ์ด๋ฅผ ์คํํ๋ฉด ์์ ๊ฐ์ ์ฐฝ์ด ๋์ต๋๋ค. ์ฐฝ ์๋จ ์ค๋ฅธ์ชฝ์ ๋นจ๊ฐ ๋ค๋ชจ๊ฐ ์ณ์ ธ์๋ New Project ๋ฒํผ์ ๋๋ฆ ๋๋ค.
ํ๋ก์ ํธ ์ค์
์ผ์ชฝ์ ์กด์ฌํ๋ ๋ชฉ๋ก์์ Spring initializr๋ฅผ ์ ํํฉ๋๋ค. ๊ทธ ํ์ ํ์ํ ๋ด์ฉ์ ๋ฃ๊ฑฐ๋ ๊ณ ๋ฆ
๋๋ค.
name์ ํ๋ก์ ํธ ์ด๋ฆ์ด๊ณ , location์ ํ๋ก์ ํธ๊ฐ ์์ฑ๋ ์์น๋ฅผ ๋ปํฉ๋๋ค. ๊ทธ ์ธ์๋ ์นํ์ด์ง๋ฅผ ํตํด ํ๋ก์ ํธ ์์ฑํ๋ ๋ฐฉ๋ฒ๊ณผ ๊ฐ์ต๋๋ค.
๋ค ์ ์์ผ๋ฉด Next๋ฅผ ๋๋ฌ ๋ค์ ๋จ๊ณ๋ก ๋์ด๊ฐ๋๋ค.
Dependencies ์ค์
ํ์ํ dependencies๋ฅผ ์ถ๊ฐํฉ๋๋ค. ์ผ์ชฝ์์ ๊ฒ์ํ๊ฑฐ๋ ์ฐพ์ ๊ณ ๋ฅธ ํ ์ฒดํฌํ๋ฉด ์ค๋ฅธ์ชฝ ์๋์ ์ถ๊ฐ๋ ๊ฒ๋ค์ ํ์ธํ ์ ์์ต๋๋ค.
๋ชจ๋ ์ค์ ํ ํ์ Finish๋ฅผ ๋๋ฅด๋ฉด ํ๋ก์ ํธ ์์ฑ์ด ๋๋ฉ๋๋ค.
ํ๋ก์ ํธ๋ฅผ ์ด๊ณ ๋ชจ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ค์ด๋ก๋๊ฐ ๋๋๋ฉด ์ ํ๋ฉด๊ณผ ๊ฐ์ด ๋์ต๋๋ค.
์ผ์ชฝ Project ํญ์์ build.gradle์ ์ฌ์๋ฉด ํ๋ก์ ํธ ์์ฑ ์ ์ค์ ํ๋ ๊ฐ๋ค์ ๋ณผ ์ ์์ต๋๋ค. ํ๋ก์ ํธ ๋์ค dependencies๋ฅผ ์ถ๊ฐํ๊ฑฐ๋ ํ๋ก์ ํธ ์ค์ ์ด ๋ฐ๋๋ค๋ฉด ์ด๊ณณ์์ ์์ ํ ์ ์์ต๋๋ค.
2. ํ๋ก์ ํธ ์คํ
๊ธฐ๋ณธ์ ์ผ๋ก ๋ง๋ค์ด์ง ํ์ผ์ ์คํํ์ฌ ํ๋ก์ ํธ๊ฐ ์ ์คํ๋๋์ง ํ์ธํ ์ ์์ต๋๋ค.
intelliJ ์ข์ธก์ Project ํญ์์ src-main-java-ํ๋ก์ ํธ๋ช ์ ๋ณด๋ฉด SpringTestApplication์ด๋ผ๋ ํ์ผ์ ์ฝ๋๋ค.
๋ง์ฝ์ "Java file outside of source root"์ ๊ฐ์ ์๋ฌ๊ฐ ๋ฌ๋ค๋ฉด
๋ฉ์ธ๋ฉ์๋ ์ข์ธก์ ์ด๋ก์ ํ๋ ์ด ์์ด์ฝ์ด ์๋๋ฐ, ๊ทธ๊ฒ์ ๋๋ฅด๊ณ Run 'SpringTestApplication'์ ๋๋ฅด๊ฑฐ๋, (๋งฅ ๊ธฐ์ค) CTRL+SHIFT+R์ ๋๋ฅด๋ฉด ํ๋ก์ ํธ๊ฐ ์คํ๋ฉ๋๋ค.
๋ง์ฝ
ํ๋ก์ ํธ๊ฐ ์ ์คํ๋์๋ค๋ฉด ์์ ๊ฐ์ด ๋์ต๋๋ค.
๋ก๊ทธ๋ฅผ ์ดํด๋ณด๋ฉด, Springboot ๋ฒ์ ์ด 2.5.0์ด๊ณ , 8080ํฌํธ๋ฅผ ํตํด ์ํ์น ํฐ์บฃ์ด ์คํ๋์๋ค๋ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค.
์ด๊ฒ์ ์ด์ ๋ธ๋ผ์ฐ์ ๋ฅผ ํตํด ํ์ธํด ๋ณผ ์ ์์ต๋๋ค. ๋ธ๋ผ์ฐ์ ์ฃผ์์ฐฝ์ localhost:8080์ ์
๋ ฅํ์ฌ ์ด๋ํฉ๋๋ค.
์์ ๊ฐ์ด ์๋ฌํ์ด์ง๊ฐ ๋์ค๋ ๊ฒ์ ์ ์ ์๋๋ฐ, ์์ ๊ฐ์ด ๋์ค๋ฉด ์ผ๋จ ์คํ๋ง์ ์คํ์ค์ด๋ผ๋ ๊ฒ์ ์ ์ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์๋ฌํ์ด์ง๊ฐ ๋์ค๋ ์ด์ ๋ ์์ง ํ๋ก์ ํธ์์ ํ์ด์ง์ ๋ด์ ๋ด์ฉ์ ๋ง๋ค์ด์ฃผ์ง ์์๊ธฐ ๋๋ฌธ์ ๋๋ค.
์ถ๊ฐ ๋ด์ฉ
Build Tool์ Gradle์์ IntelliJ๋ก ๋ฐ๊พธ๋ ๋ฐฉ๋ฒ
๋ช
์นญ์ Build tool์ด๋ผ ํํํด๋ ๋ ์ง ์ ๋ชจ๋ฅด๊ฒ ๋ค. build์ run์ gradle์ ์ด์ฉํ ๊ฒ์ธ์ง, IntelliJ๋ฅผ ์ด์ฉํ ๊ฒ์ธ์ง ์ค์ ํ๋ ๊ฒ์ด๋ค.
์ค์ ์์ Build, Extenstion, Deployment - Gradle์ ๋ค์ด๊ฐ๋ฉด ์๋์ Build and run์ด๋ผ๋ ๊ณณ์ด ์๋ค. ์ฌ๊ธฐ์ Build and run using๊ณผ Run tests using์ Gradle์์ IntelliJ IDEA๋ก ๋ฐ๊ฟ์ฃผ๋ฉด ๋๋ค. ์ ์ฌ์ง์์ ๋นจ๊ฐ์ ๋ค๋ชจ์ ํด๋นํ๋ ๊ณณ์ด๋ค.
์ด๋ ๊ฒ ๋ฐ๊ฟ์ฃผ๋ฉด ํ๋ก์ ํธ ์คํ์๋๊ฐ ๋นจ๋ผ์ง๊ฒ ๋๋ค๊ณ ํ๋ค.
์ฐธ๊ณ
- [Blog] IntelliJ Springboot ํ๋ก์ ํธ ์์ฑ ๋ฐ ์คํ: https://velog.io/@deannn/Spring-IntelliJ-Springboot-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8-%EC%83%9D%EC%84%B1-%EB%B0%8F-%EC%8B%A4%ED%96%89