์คํ๋ง ๋ถํธ ๊ธฐ๋ณธ ๊ฐ๋ ๊ณผ ์ค์ : ์ฝ๊ณ ๋น ๋ฅธ ์น ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ ๊ฐ์ด๋
์คํ๋ง ๋ถํธ(SPRING BOOT) ๋ ์น ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์ ํ์ํ ๋ณต์กํ ์ค์ ์ ๊ฐ์ํํด์ฃผ๋ ํ๋ ์์ํฌ๋ก, ๊ฐ๋ฐ์๊ฐ ๋น ๋ฅด๊ฒ ํ๋ก๋์ ์์ค์ ์๋น์ค๋ฅผ ๊ตฌ์ถํ ์ ์๋๋ก ๋์ต๋๋ค. ์ด ๊ธ์์๋ ์คํ๋ง ๋ถํธ์ ์ ์์ ํน์ง , ์คํ๋ง๊ณผ์ ์ฐจ์ด์ , ๊ทธ๋ฆฌ๊ณ Spring Initializr๋ก ํ๋ก์ ํธ ์์ํ๊ธฐ ์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค.
๋ชฉ์ฐจ
- ์คํ๋ง ๋ถํธ๋ ๋ฌด์์ธ๊ฐ?
- ์คํ๋ง๊ณผ ์คํ๋ง ๋ถํธ์ ์ฐจ์ด์
- Spring Initializr๋ก ์ฒซ ํ๋ก์ ํธ ์์ํ๊ธฐ
- ์คํ๋ง ๋ถํธ์ ์ฃผ์ ์ค์ ํ์ผ๊ณผ ์ฌ์ฉ๋ฒ
- ์คํ๋ง ๋ถํธ๋ก Hello World ์์ ๋ง๋ค์ด๋ณด๊ธฐ
1. ์คํ๋ง ๋ถํธ๋ ๋ฌด์์ธ๊ฐ?
์คํ๋ง ๋ถํธ๋ ๊ธฐ์กด ์คํ๋ง ํ๋ ์์ํฌ์ ๋ณต์กํ ์ค์ ์ ์๋ํ ํ๊ณ , ๋น ๋ฅธ ๊ฐ๋ฐ ํ๊ฒฝ์ ์ ๊ณตํฉ๋๋ค. ์ผ๋ฐ์ ์ธ ์น ํ๋ก์ ํธ์์๋ ์๋ง์ ์์กด์ฑ, ์๋ฒ ์ค์ , ๋ณด์ ๊ตฌ์ฑ ๋ฑ์ ๊ฐ๋ฐ์๊ฐ ์๋์ผ๋ก ์ฒ๋ฆฌํด์ผ ํ์ง๋ง, ์คํ๋ง ๋ถํธ๋ ์ด๋ฌํ ๊ณผ์ ๋๋ถ๋ถ์ ์๋์ผ๋ก ์ฒ๋ฆฌ ํฉ๋๋ค.
์คํ๋ง ๋ถํธ์ ์ฃผ์ ํน์ง :
- ์๋ ์ค์ (Auto-Configuration) : ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ํ ์ค์ ์ ์๋์ผ๋ก ๊ตฌ์ฑํด์ค
- ๋ด์ฅ ์น ์๋ฒ ์ ๊ณต : Tomcat, Jetty ๋ฑ์ ์๋ฒ๋ฅผ ๋ด์ฅ
- ์์กด์ฑ ๊ด๋ฆฌ ์ฉ์ด : Spring Starter๋ฅผ ํตํด ํ์ํ ๋ชจ๋์ ํ ๋ฒ์ ๊ฐ์ ธ์ด
- ์ด์ ํ๊ฒฝ๋ณ ์ค์ ์ง์ :
application.properties
์
application.yml
ํ์ฉ
2. ์คํ๋ง๊ณผ ์คํ๋ง ๋ถํธ์ ์ฐจ์ด์
๊ตฌ๋ถ | ์คํ๋ง (Spring) | ์คํ๋ง ๋ถํธ (Spring Boot) |
---|---|---|
์ค์ ๋ฐฉ์ | ์๋ ์ค์ ์ด ๋ง์ | ์๋ ์ค์ ์ง์ (Auto-Configuration) |
์น ์๋ฒ | ์ธ๋ถ ์๋ฒ ์ค์ ํ์ | ๋ด์ฅ ์๋ฒ(Tomcat ๋ฑ) ๊ธฐ๋ณธ ์ ๊ณต |
์์กด์ฑ | ๊ฐ๋ณ ๋ชจ๋ ์ ํ | Spring Starter๋ก ํตํฉ ์์กด์ฑ ๊ด๋ฆฌ |
๋ฐฐํฌ ์๋ | ์ค์ ์ ๋ง์ ์๊ฐ ์์ | ๋น ๋ฅธ ์ด๊ธฐํ ๋ฐ ๋ฐฐํฌ |
์์ : ์คํ๋ง์์๋ Tomcat ์๋ฒ๋ฅผ ๋ฐ๋ก ์ค์นํด์ผ ํ์ง๋ง, ์คํ๋ง ๋ถํธ๋ ๋ด์ฅ๋ Tomcat ์๋ฒ๋ก ๋ฐ๋ก ์คํ ํ ์ ์์ต๋๋ค. ์ด๋ ๊ฐ๋ฐ์๊ฐ ์๋ฒ ์ค์ ์ ์๊ฐ์ ๋ญ๋นํ์ง ์๊ณ ๋ฐ๋ก ๋น์ฆ๋์ค ๋ก์ง ๊ฐ๋ฐ ์ ์ง์คํ ์ ์๊ฒ ํด์ค๋๋ค.
3. Spring Initializr๋ก ์ฒซ ํ๋ก์ ํธ ์์ํ๊ธฐ
์คํ๋ง ๋ถํธ ํ๋ก์ ํธ๋ฅผ ์์ํ๋ ๊ฐ์ฅ ๋น ๋ฅด๊ณ ๊ฐํธํ ๋ฐฉ๋ฒ์ Spring Initializr ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๋๋ค.
Spring Initializr ์ฌ์ฉ ๋ฐฉ๋ฒ
- ํ๋ก์ ํธ ์ ๋ณด๋ฅผ ์
๋ ฅํฉ๋๋ค.
- Project : Maven ๋๋ Gradle ์ ํ
- Language : Java ์ ํ
- Spring Boot Version : ์ต์ ์์ ๋ฒ์ ์ ํ (์: 3.0.0)
- Dependencies : Spring Web, Spring Data JPA ์ ํ - Generate ๋ฒํผ์ ๋๋ฌ ํ๋ก์ ํธ๋ฅผ ๋ค์ด๋ก๋ํฉ๋๋ค.
- ๋ค์ด๋ก๋ํ ํ๋ก์ ํธ๋ฅผ IDE(IntelliJ, Eclipse ๋ฑ)์ ์ด์ด์ค๋๋ค.
4. ์คํ๋ง ๋ถํธ์ ์ฃผ์ ์ค์ ํ์ผ๊ณผ ์ฌ์ฉ๋ฒ
์คํ๋ง ๋ถํธ ํ๋ก์ ํธ์๋ ์ฃผ๋ก
application.properties
๋๋
application.yml
ํ์ผ๋ก ์ค์ ์ ๊ด๋ฆฌํฉ๋๋ค. ์ด ํ์ผ์์ ํฌํธ ๋ฒํธ, ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐ ์ ๋ณด, ๋ก๊น
์ค์ ๋ฑ์ ํ ์ ์์ต๋๋ค.
application.properties
์์
server.port=8081
spring.datasource.url=jdbc:h2:mem:testdb
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=password
์คํ๋ง ๋ถํธ(SPRING BOOT) ๋ ์น ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์ ํ์ํ ๋ณต์กํ ์ค์ ์ ๊ฐ์ํํด์ฃผ๋ ํ๋ ์์ํฌ๋ก, ๊ฐ๋ฐ์๊ฐ ๋น ๋ฅด๊ฒ ํ๋ก๋์ ์์ค์ ์๋น์ค๋ฅผ ๊ตฌ์ถํ ์ ์๋๋ก ๋์ต๋๋ค. ์ด ๊ธ์์๋ ์คํ๋ง ๋ถํธ์ ์ ์์ ํน์ง , ์คํ๋ง๊ณผ์ ์ฐจ์ด์ , ๊ทธ๋ฆฌ๊ณ Spring Initializr๋ก ํ๋ก์ ํธ ์์ํ๊ธฐ ์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค.
5. ์คํ๋ง ๋ถํธ๋ก Hello World ์์ ๋ง๋ค์ด๋ณด๊ธฐ
์๋๋ ์คํ๋ง ๋ถํธ๋ก ๊ฐ๋จํ Hello World API ๋ฅผ ๊ตฌํํ ์ฝ๋ ์์ ์ ๋๋ค.
HelloController.java
package com.example.demo;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloController {
@GetMapping("/hello")
public String sayHello() {
return "Hello, Spring Boot!";
}
}
์ค๋ช
-
@RestController
: ์ด ํด๋์ค๊ฐ REST API์ ์ปจํธ๋กค๋ฌ์์ ๋ํ๋ ๋๋ค. -
@GetMapping("/hello")
:/hello
๊ฒฝ๋ก๋ก GET ์์ฒญ์ด ๋ค์ด์ค๋ฉด ๋ฉ์๋๊ฐ ์คํ๋ฉ๋๋ค. - ์๋ต : ํด๋ผ์ด์ธํธ๊ฐ
/hello
๊ฒฝ๋ก๋ก ์ ์ํ๋ฉด “Hello, Spring Boot!” ๋ฉ์์ง๊ฐ ๋ฐํ๋ฉ๋๋ค.
์คํ ๊ฒฐ๊ณผ
- ์ ํ๋ฆฌ์ผ์ด์
์ ์คํํ ํ, ๋ธ๋ผ์ฐ์ ์์
http://localhost:8080/hello
์ ์ ์ํฉ๋๋ค. - “Hello, Spring Boot!” ๋ฉ์์ง๊ฐ ํ๋ฉด์ ์ถ๋ ฅ๋ฉ๋๋ค.
์คํ๋ง ๋ถํธ์ ์ฑ์ฅ๊ณผ ํธ๋ ๋
- ์คํ๋ง ๋ถํธ๋ 2014๋ ์ถ์ ์ดํ ๋น ๋ฅธ ๊ฐ๋ฐ ํ๊ฒฝ๊ณผ ๋์ ์์ฐ์ฑ ๋๋ถ์ ๊พธ์คํ ์ธ๊ธฐ๋ฅผ ๋๊ณ ์์ต๋๋ค.
- 2024๋ ๊ธฐ์ค์ผ๋ก ๋ง์ดํฌ๋ก์๋น์ค ์ํคํ ์ฒ ์ ํด๋ผ์ฐ๋ ๋ค์ดํฐ๋ธ ๊ฐ๋ฐ ์ ํ์์ ์ธ ํ๋ ์์ํฌ๋ก ์๋ฆฌ ์ก์์ต๋๋ค.
- JetBrains์ Java ๊ฐ๋ฐ์ ์ค๋ฌธ ์กฐ์ฌ ์ ๋ฐ๋ฅด๋ฉด, 60% ์ด์์ ๊ฐ๋ฐ์ ๊ฐ ์คํ๋ง ๋ถํธ๋ฅผ ์ฌ์ฉํ ๊ฒฝํ์ด ์๋ค๊ณ ์๋ตํ์ต๋๋ค.
๊ด๋ จ ๋งํฌ
IntelliJ์์ ์คํ๋ง ๋ถํธ ์ค์ ๐
์คํ๋ง ๋ถํธ์ ๋ง์ดํฌ๋ก์๋น์ค๐
์คํ๋ง ๋ถํธ ์ต์ ๋ฒ์ ๋ฆด๋ฆฌ์ฆ ๋ ธํธ๐
FAQ
1. ์คํ๋ง ๋ถํธ๋ ์ ์ธ๊ธฐ๊ฐ ๋ง๋์?
- ์ค์ ์ด ๊ฐ๋จํ๊ณ , ๋ด์ฅ ์๋ฒ๋ฅผ ํตํด ๋น ๋ฅด๊ฒ ๋ฐฐํฌํ ์ ์๊ธฐ ๋๋ฌธ์ ๋ง์ ๊ฐ๋ฐ์๋ค์ด ์ ํธํฉ๋๋ค.
2. ์คํ๋ง ๋ถํธ ํ๋ก์ ํธ์ ์ด๋ค ์์กด์ฑ์ ์ถ๊ฐํด์ผ ํ๋์?
- Spring Web, Spring Data JPA, Spring Security๊ฐ ์ฃผ๋ก ์ฌ์ฉ๋ฉ๋๋ค.
3. ์คํ๋ง ๋ถํธ์ ์คํ๋ง์ ๊ฐ์ฅ ํฐ ์ฐจ์ด์ ์ ๋ฌด์์ธ๊ฐ์?
- ์คํ๋ง ๋ถํธ๋ ์๋ ์ค์ ๊ณผ ๋ด์ฅ ์๋ฒ๋ฅผ ์ ๊ณตํ์ฌ ๊ฐ๋ฐ ์๋๋ฅผ ํฌ๊ฒ ๋์ ๋๋ค.
4. ์ด๋ค IDE๊ฐ ์คํ๋ง ๋ถํธ ๊ฐ๋ฐ์ ๊ฐ์ฅ ์ข๋์?
- IntelliJ IDEA๊ฐ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋๋ฉฐ, Eclipse๋ ๋ง์ด ์ฌ์ฉ๋ฉ๋๋ค.
5. ์คํ๋ง ๋ถํธ์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ์ด๋ป๊ฒ ์ค์ ํ๋์?
application.properties
ํ์ผ์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐ ์ ๋ณด๋ฅผ ์ค์ ํ๋ฉด ๋ฉ๋๋ค.
์ด์ ์คํ๋ง ๋ถํธ์ ๊ธฐ๋ณธ ๊ฐ๋ ๊ณผ ์ค์ ์ ๋ํด ์ ์ดํดํ์ จ๋์? ์คํ๋ง ๋ถํธ๋ฅผ ํ์ฉํด ๋น ๋ฅด๊ณ ํจ์จ์ ์ธ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ง๋ค์ด๋ณด์ธ์!
๋๊ธ