01. SpringBoot - YAPP-16th/Team_Web_3_Backend GitHub Wiki
IntelliJ์ ํ๋ฌ๊ทธ์ธ ์ค์น๋ ๋๋ฌด ๊ฐ๋จํ๋ค. IntelliJ๋ฅผ ์คํํ๊ณ IntelliJ IDEA > preference ํญ๋ชฉ์ผ๋ก ๋ค์ด๊ฐ์ Spring ๋๋ Spring Boot๋ก ๊ฒ์ํ๊ณ ๋์จ ๊ฒฐ๊ณผ์์ Spring Boot Plug-In ์ ํํ๊ณ ์ค์นํ๋ค.
File -> New -> Project ๋ฅผ ํด๋ฆญํ๋ฉด ํ๋ก์ ํธ ํ ํ๋ฆฟ์ ์ ํํ ์ ์๋๋ฐ SpringBoot Plug-in์ ์ค์นํ์ผ๋ฉด Spring Initializr ํญ๋ชฉ์ด ๋ณด์ธ๋ค. ํ๋ก์ ํธ ํ์ ์ ํธํ๊ฑธ๋ก ์ ํํ๋ฉด ๋๋ค. ๋ณธ์ธ์ Maven์ ์ต์ํ๋, Maven Project๋ก ์ ํํ๋ค.
์ง๊ธ์ Embeded๋ ํฐ์บฃ์ผ๋ก Stand-Aloneํํ๋ก ๊ตฌ๋์ํค๊ธฐ ์ํ ๋ชฉ์ ์ด๋ฏ๋ก Packagin Type์ jar๋ก ์ ํํ๋ค. war๋ก ์ ํํ ๊ฒฝ์ฐ, ๊ธฐ์กด๊ณผ ๊ฐ์ด ์ธ๋ถ์ ํฐ์บฃ์ผ๋ก ๋ํ๋ก์ด ํ๋ ๊ตฌ์กฐ๋ก ๋ง๋ค์ด์ง๋ค.
๋ฌผ๋ก , ์์ค์ ์ต์ข ๋ฐฐํฌ์ ํํ๊ฐ ์๋ฒ์ ํฐ์บฃ์ ๋ํ๋ก์ดํด์ผ ํ๋ ๊ตฌ์กฐ๋ผ๋ฉด ์ฒ์๋ถํฐ War๋ก ๋ง๋ค์ด์ ์์ ํด๋ ์๊ด์๋ค. ์ง๊ธ ์ผ๋ง๋ ๋นจ๋ฆฌ, ๊ฐํธํ๊ฒ ์น์ดํ๋ฆฌ์ผ์ด์ ์ ๋ง๋ค์ด์ ์คํํ ์ ์๋๊ฐ๋ฅผ ํ์ธํ๊ธฐ ์ํจ์ด๋ jar๋ก ์ ํํ๊ณ , ๋ก์ปฌ๊ฐ๋ฐ ๋ฐ ํ ์คํธ๋ฅผ ํ๋ค๊ฐ ๋์ค์ ๋ฐฐํฌํ ๊ฒฝ์ฐ war๋ก ๋ณ๊ฒฝํด์ ๋ฐฐํฌ๋ฅผ ํ ์๋ ์๋ค.
ํ๋ก์ ํธ ์์ฑ ํ ๋์ค์ pom.xml๋ก ๋ณ๋๋ก ์ถ๊ฐํ ์ ์์ผ๋, ๊ผญ ํ์ํ ๋ผ์ด๋ธ๋ฌ๋ง ์ ํํ๊ณ ๋์ด๊ฐ๋ฉด ๋๋ค. ์ ํํ์ง ์์๋ ์๋ฌด๋ฐ ๋ฌธ์ ๊ฐ ๋์ง ์๋๋ค. Web์ ์ ํํด์ฃผ๋๊ฒ์ด ํธํ๋ค. SpringBoot๋ฅผ ์ด์ฉํ ํฐ์บฃ๊ธฐ๋ฐ ์นํ๋ก์ ํธ๊ฐ ์์ฑ๋์๋ค.
- ๋ฉ์ธํด๋์ค: SpringBootRestDemoApplication
- ํ๋กํผํฐํ์ผ: application.properties
- pom.xml ํฐ์บฃ๊ด๋ จํ ์ค์ ๋ฐ web.xml๋ฑ์ ํ์ผ์ ๋ชจ๋ SpringBoot๊ฐ ๊ตฌ๋๋ ๋ ๋ด๋ถ ๋ชจ๋์ ์ํด์ AutoConfiquration ์๋์ค์ ๋๋ค. ์์ผ๋ก๋ ๊ฐ๋ฐ์๊ฐ ์ง์ ๋ง์ง ์ผ์ ์๋ค.
๊ฐ๋จํ๋ค. ๋ฉ์ธํด๋์ค๋ฅผ Run์ํค๋ฉด SpringBoot ํน์ ์ ๋ก๊ณ ์ ํจ๊ป ๋ก๊ทธ๊ฐ ์ฌ๋ผ์ค๋ฉด์ ์คํ๋๋ค. ์ฌ๊ธฐ์ ๋ฐ๋ก ์ฑ๊ณต! ํ๋ฉด ์ข์ํ ๋ฐโฆ. ์๋์ ๊ฐ์ ์๋ฌ๊ฐ ๋๋ฉด์ ์ดํ๋ฆฌ์ผ์ด์ ์์์ด ์คํจ๋๋ค.
Cannot determine embedded database driver class for database type NONE
If you want an embedded database please put a supported one on the classpath. If you have database settings to be loaded from a particular profile you may need to active it (no profiles are currently active).
ํด์ํด๋ณด๋ฉด, ๋ฐ์ดํ๋ฒ ์ด์ค type์ด None์ด๋ผ ์๋ฒ ๋๋๋ ๋ฐ์ดํ๋ฒ ์ด์ค ๋๋ผ์ด๋ฒ๋ฅผ ๊ฒฐ์ ํ ์ ์๋ค. ํ๋์ ์๋ฒ ๋๋๋ ๋ฐ์ดํ๋ฒ ์ด์ค๋ฅผ ์ฐ๊ณ ์ถ๋ค๋ฉด ํด๋์คํจ์ค์ ์ง์๋๋ ๋๋ผ์ด๋ฒ ํ์ผ์ ๋ฃ์ด์ผ ํ๋ฉฐ profile๋ก๋ถํฐ ๋ก๋ํ๊ธฐ ์ํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ธํ ์ ๊ฐ์ง๊ณ ์๋ค๋ฉด, profile์ ํ์ฑํ์์ผ์ผ ํ๋ค.
SpringBoot๋ ์ดํ๋ฆฌ์ผ์ด์ ์ด ์์๋ ๋ ํ์ํ ๊ธฐ๋ณธ ์ค์ ๋ค์ ์๋์ผ๋ก ์ค์ ํ๊ฒ ๋์ด ์๋๋ฐ (Auto Configuration) ๊ทธ ์ค DataSource์ค์ ์ด ์๋๊ตฌ์ฑ ๋ ๋ ํ์ํ Database Type ์ ๋ณด๋ค์ด ์ค์ ๋์ด ์์ง ์์์ ๋ฐ์ํ๋ ๋ฌธ์ ์ด๋ค.
ํ๋ก์ ํธ๊ฐ ์์ฑ๋ ๋ application.propertiesํ์ผ์ด ์๋ ์์ฑ๋์์ผ๋ ๋น ํ์ผ๋ก ์์ฑ๋๋ค.
์ฌ์ฉ์๊ฐ ์ํ๋ db๋ฅผ ์ ํํ๊ณ ๊ฑฐ๊ธฐ์ ๋ง๋ ๋๋ผ์ด๋ฒ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค์น์ jdbc์ค์ ์ ํด์ผ ํ๋ค๋ ์๋ฏธ์ด๋ค.
์ด๋ ๊ฒ ํด๊ฒฐ์ ํ ์๋ ์์ผ๋, ๋น์ฅ jdbc์ค์ ์ด ํ์์๊ณ ์ด๋ค db๋ฅผ ์ฌ์ฉํ ์ง ๊ฒฐ์ ๋ ์๋ ์ํ์ด๋ค.
์ด๋ด ๊ฒฝ์ฐ ํด๊ฒฐํ ์ ์๋ ๋ฐฉ๋ฒ์ ์์๊น?
DB๋ฅผ ๋น์ฅ ์ฌ์ฉํ์ง ์๊ณ SpringBoot๋ฅผ ์ฌ์ฉํด์ผ ํ๋ ๊ฒฝ์ฐ, ๊ตณ์ด DB์ค์ ์ ํ์ง ์๊ณ ์๋์ ๊ฐ์ด SpringBoot ๋ฉ์ธํด๋์ค์ Annotation์ ์ถ๊ฐํจ์ผ๋ก์จ SpringBoot์์์ ์คํ๋๋ Auto Configuration์์
์ค DatatSource ์ค์ ๋ถ๋ถ์ ์ ์ธ์ํฌ ์ ์๋ค.
์คํ๋ง๋ถํธ ๋ฉ์ธํด๋์ค์ ์๋์ ๊ฐ์ด ์ด๋
ธํ
์ด์
์ ์ถ๊ฐํ๋ค.
๋ค์ Run์ํค๋ฉด, ์ ์์ ์ผ๋ก SpringBoot ์ดํ๋ฆฌ์ผ์ด์ ์ด ์คํ๋๋ค. ํ์ง๋ง, ๋ธ๋ผ์ฐ์ ๋ฅผ ์ด๊ณ http://localhost:8080 ์ ์ ๋ ฅํ๋ฉด ์๋์ ์๋ฌ ๋ฉ์ธ์ง๊ฐ ๋์จ๋ค.
Whitelabel Error Page
This application has no explicit mapping for /error, so you are seeing this as a fallback.
Sun Aug 13 14:34:00 KST 2017
There was an unexpected error (type=Not Found, status=404).
No message available
ํด๋น ์ค๋ฅ๊ฐ ๋์ค๋ ์ด์ ๋ ๋น์ฐํ ํฐ์บฃ์ด ์ธ์ํด์ผ ํ๋ index.html ํ์ผ์ด๋, index.jsp์ด ์์ง ์๊ธฐ ๋๋ฌธ๋ค.
SpringBoot๋ ํ๋ก์ ํธ๊ฐ ์์ฑ๋ ๋ Web๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ํฌํจ๋ ๊ฒฝ์ฐ, ์ ์ ์ธ ์น๋ฆฌ์์ค๋ src > main > resources > static ์๋์์ ๊ด๋ฆฌ๋๋๋ก ์ค์ ๋๋ค. ์ฆ, html, css, js, image๋ฑ์ ์ ์ ์ปจํ ์ธ ๋ static์๋์ ์์น์ํค๋ฉด ์ ๊ทผ๊ฐ๋ฅํ๊ณ , static์ด ๋ฃจํธํด๋๊ฐ ๋๋ค๋ ์๋ฏธ์ด๋ค. ํ๋ก์ ํธ๋ฅผ ์์ฑํ ๋น์, ๋ผ์ด๋ธ๋ฌ๋ฅผ ์ถ๊ฐํ ๋ Web ๋ผ์ด๋ธ๋ฌ๋ฅผ ์ถ๊ฐํ๋ค๋ฉด static ํด๋๊ฐ ์๋์ผ๋ก ๋ง๋ค์ด์ง๋๋ฐ, ์ ํํ์ง ์์๋ค ํ๋๋ผ๋ POM.xmlํ์ผ์ ์๋์ Dependency๋ฅผ ์ถ๊ฐํ๊ณ staticํด๋๋ฅผ ์ง์ ๋ง๋ค์ด ์ฃผ๋ฉด ๋๋ค.
<dependency>
<groupid>org.springframework.boot</groupid>
<artifactid>spring-boot-starter-web</artifactid>
</dependency>
staticํด๋์๋์ index.htmlํ์ผ์ ๋ง๋ค๊ณ โHello, SpringBoot!โ ๋ฅผ ์ ๋ ฅํ๊ณ ์ดํ๋ฆฌ์ผ์ด์ ์ ์ฌ๊ตฌ๋ํ๋ค. http://localhost:8080 ๋ก ์ ๊ทผํ๋ฉด ์ ์์ ์ผ๋ก ํ์ด์ง์ ์ ์์ด ๊ฐ๋ฅํ๋ค.