Spring Boot Starter ์๋ฒฝ ํ์ฉ ๊ฐ์ด๋: ํ์ํ ์์กด์ฑ๋ง ์ฝ๊ฒ ๊ด๋ฆฌํ๊ธฐ
์คํ๋ง ๋ถํธ(Spring Boot) ์ ๊ฐ์ฅ ํฐ ์ฅ์ ์ค ํ๋๋ ํ์ํ ์์กด์ฑ์ ์์ฝ๊ฒ ๊ด๋ฆฌํ ์ ์๋ค๋ ์ ์ ๋๋ค. ์ด๋ ์ค์ํ ์ญํ ์ ํ๋ ๊ฒ์ด ๋ฐ๋ก Spring Boot Starter ์ ๋๋ค. ์ด๋ฒ ํฌ์คํ ์์๋ Starter์ ์ญํ ๊ณผ ์ข ๋ฅ ๋ฅผ ์๊ฐํ๊ณ , ์์ฃผ ์ฌ์ฉ๋๋ ๋ํ์ ์ธ Starter ๋ค์ ์์๋ณด๊ฒ ์ต๋๋ค. ๋ง์ง๋ง์ผ๋ก ์์กด์ฑ ์ต์ํ์ Starter ์ ํ ์ ๋ต ์ ํตํด ํ๋ก์ ํธ์ ๋ง๋ Starter๋ฅผ ํจ๊ณผ์ ์ผ๋ก ํ์ฉํ๋ ๋ฐฉ๋ฒ์ ์ค๋ช ํฉ๋๋ค.
๋ชฉ์ฐจ
- Spring Boot Starter๋ ๋ฌด์์ธ๊ฐ?
- ์์ฃผ ์ฌ์ฉ๋๋ ๋ํ์ ์ธ Starter
- ์์กด์ฑ ์ต์ํ์ Starter ์ ํ ์ ๋ต
- Starter๋ฅผ ํ์ฉํ ๊ฐ๋จํ ์ฝ๋ ์์
- ํธ๋ ๋์ ํต๊ณ: Starter ํ์ฉ์ ์ค์์ฑ
1. Spring Boot Starter๋ ๋ฌด์์ธ๊ฐ?
Spring Boot Starter ๋ ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์ ํ์ํ ์์กด์ฑ๋ค์ ๋ฏธ๋ฆฌ ๋ฌถ์ด๋์ ํจํค์ง ์ ๋๋ค. ํ๋ก์ ํธ๋ฅผ ์์ํ ๋ ์ง์ ๋ชจ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฐพ๊ณ ์ค์ ํ ํ์ ์์ด , ํ์ํ Starter๋ง ์ถ๊ฐํ๋ฉด ๊ด๋ จ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์๋์ผ๋ก ํฌํจ๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด, Spring Web Starter ๋ฅผ ์ถ๊ฐํ๋ฉด ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ํ์ํ Spring MVC, Jackson, Tomcat ๋ฑ์ด ํจ๊ป ์ถ๊ฐ๋ฉ๋๋ค.
Starter ์ฌ์ฉ์ ์ฅ์ :
- ๊ฐํธํ ์์กด์ฑ ๊ด๋ฆฌ : ํ์ํ ๊ธฐ๋ฅ์ ํ ๋ฒ์ ํฌํจํ ์ ์์
- ๋น ๋ฅธ ๊ฐ๋ฐ ํ๊ฒฝ ๊ตฌ์ฑ : ๊ฐ๋ฐ์๊ฐ ๊ฐ๋ณ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ง์ ๊ด๋ฆฌํ ํ์ ์์
- ๋ฒ์ ํธํ์ฑ ์ ์ง : Starter์ ํฌํจ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ด ์๋ก ํธํ๋๋๋ก ๊ด๋ฆฌ๋จ
2. ์์ฃผ ์ฌ์ฉ๋๋ ๋ํ์ ์ธ Starter
์คํ๋ง ๋ถํธ์์๋ ๋ค์ํ Starter๋ฅผ ์ ๊ณตํฉ๋๋ค. ๊ทธ์ค ์น ๊ฐ๋ฐ , ๋ฐ์ดํฐ ์ฒ๋ฆฌ , ๋ณด์ ์ ์์ฃผ ์ฌ์ฉ๋๋ Starter๋ค์ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
Starter ์ด๋ฆ | ์ค๋ช | ์ฃผ์ ์ฌ์ฉ ์์ |
---|---|---|
spring-boot-starter-web | ์น ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์ ํ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ ๊ณต | REST API, MVC ์ ํ๋ฆฌ์ผ์ด์ ๊ตฌ์ถ |
spring-boot-starter-data-jpa | JPA๋ฅผ ํ์ฉํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๋ ์ง์ | MySQL, H2์ ๊ฐ์ DB์ ์ฐ๋ |
spring-boot-starter-security | ์ ํ๋ฆฌ์ผ์ด์ ๋ณด์ ๊ธฐ๋ฅ ์ถ๊ฐ | ์ฌ์ฉ์ ์ธ์ฆ, ๊ถํ ๋ถ์ฌ ๊ตฌํ |
spring-boot-starter-thymeleaf | Thymeleaf ํ ํ๋ฆฟ ์์ง์ ์ฌ์ฉํ ๋ทฐ ๋ ๋๋ง ์ง์ | HTML ๋ ๋๋ง ๊ธฐ๋ฐ ์น ํ์ด์ง ๊ฐ๋ฐ |
spring-boot-starter-test | ํ ์คํธ ์ฝ๋ ์์ฑ์ ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํฌํจ | ๋จ์ ํ ์คํธ ๋ฐ ํตํฉ ํ ์คํธ |
3. ์์กด์ฑ ์ต์ํ์ Starter ์ ํ ์ ๋ต
์์กด์ฑ์ ๊ด๋ฆฌํ ๋๋ ์ต์ํ์ Starter๋ง ์ถ๊ฐ ํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ๋ถํ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๊ฐ ํฌํจ๋๋ฉด ์ ํ๋ฆฌ์ผ์ด์ ์ ํฌ๊ธฐ๊ฐ ์ปค์ง๊ณ ์ฑ๋ฅ์ ์ํฅ์ ์ค ์ ์์ต๋๋ค. ์๋์ ๊ฐ์ ์ ํ ์ ๋ต ์ ๋ฐ๋ฅด๋ ๊ฒ์ด ์ข์ต๋๋ค.
1) ํ์ํ ๊ธฐ๋ฅ๋ง ํฌํจํ๊ธฐ
์๋ฅผ ๋ค์ด, ๋จ์ํ API ์๋ฒ๋ฅผ ๋ง๋ ๋ค๋ฉด spring-boot-starter-web ๋ง ์ถ๊ฐํ๊ณ , ๋ณด์์ด ํ์ํ ๋๋ง spring-boot-starter-security ๋ฅผ ์ถ๊ฐํฉ๋๋ค.
2) ๊ธฐ์กด Starter์ ์ค๋ณต๋ ์์กด์ฑ ํ์ธํ๊ธฐ
์ผ๋ถ Starter๋ ๊ณตํต ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํฌํจํฉ๋๋ค. ์๋ฅผ ๋ค์ด, spring-boot-starter-data-jpa ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ด๋ จ๋ ์์กด์ฑ์ ํฌํจํ๋ฏ๋ก, ๋ณ๋๋ก JDBC Starter๋ฅผ ์ถ๊ฐํ ํ์๊ฐ ์์ต๋๋ค.
3) ์์กด์ฑ ์ถฉ๋ ์ฃผ์ํ๊ธฐ
Starter๋ ์ฌ๋ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํฌํจํ๊ธฐ ๋๋ฌธ์ ๋ฒ์ ์ถฉ๋ ์ด ๋ฐ์ํ ์ ์์ต๋๋ค. ํ์ํ์ง ์์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋
exclude
์ต์
์ ์ฌ์ฉํด ์ ๊ฑฐํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
์คํ๋ง ๋ถํธ(Spring Boot) ์ ๊ฐ์ฅ ํฐ ์ฅ์ ์ค ํ๋๋ ํ์ํ ์์กด์ฑ์ ์์ฝ๊ฒ ๊ด๋ฆฌํ ์ ์๋ค๋ ์ ์ ๋๋ค. ์ด๋ ์ค์ํ ์ญํ ์ ํ๋ ๊ฒ์ด ๋ฐ๋ก Spring Boot Starter ์ ๋๋ค. ์ด๋ฒ ํฌ์คํ ์์๋ Starter์ ์ญํ ๊ณผ ์ข ๋ฅ ๋ฅผ ์๊ฐํ๊ณ , ์์ฃผ ์ฌ์ฉ๋๋ ๋ํ์ ์ธ Starter ๋ค์ ์์๋ณด๊ฒ ์ต๋๋ค. ๋ง์ง๋ง์ผ๋ก ์์กด์ฑ ์ต์ํ์ Starter ์ ํ ์ ๋ต ์ ํตํด ํ๋ก์ ํธ์ ๋ง๋ Starter๋ฅผ ํจ๊ณผ์ ์ผ๋ก ํ์ฉํ๋ ๋ฐฉ๋ฒ์ ์ค๋ช ํฉ๋๋ค.
4. Starter๋ฅผ ํ์ฉํ ๊ฐ๋จํ ์ฝ๋ ์์
Starter๋ฅผ ์ฌ์ฉํด ๊ฐ๋จํ REST API ๋ฅผ ๋ง๋ค์ด๋ณด๊ฒ ์ต๋๋ค. ์ด ์์ ์์๋ spring-boot-starter-web ์ ์ฌ์ฉํฉ๋๋ค.
์์กด์ฑ ์ถ๊ฐ (pom.xml)
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
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 hello() {
return "Hello, Spring Boot Starter!";
}
}
์ค๋ช
-
@RestController
: ์ด ํด๋์ค๊ฐ REST API์ ์ปจํธ๋กค๋ฌ์์ ๋ํ๋ ๋๋ค. -
@GetMapping("/hello")
:/hello
๊ฒฝ๋ก๋ก GET ์์ฒญ์ด ๋ค์ด์ค๋ฉด ๋ฉ์๋๊ฐ ์คํ๋ฉ๋๋ค. - ์๋ต : ํด๋ผ์ด์ธํธ๊ฐ
/hello
๋ก ์ ์ํ๋ฉด “Hello, Spring Boot Starter!” ๋ฉ์์ง๊ฐ ๋ฐํ๋ฉ๋๋ค.
์คํ ๊ฒฐ๊ณผ
- ์ ํ๋ฆฌ์ผ์ด์
์ ์คํํ๊ณ , ๋ธ๋ผ์ฐ์ ์์
http://localhost:8080/hello
๋ก ์ ์ํฉ๋๋ค. - “Hello, Spring Boot Starter!” ๋ผ๋ ์๋ต์ด ๋ฐํ๋ฉ๋๋ค.
5. ํธ๋ ๋์ ํต๊ณ: Starter ํ์ฉ์ ์ค์์ฑ
- Spring Boot Starter ๋ ๊ฐ๋ฐ ์๊ฐ์ ๋จ์ถํ๊ณ , ์์ฐ์ฑ์ ๋์ด๋ ๋ฐ ํฌ๊ฒ ๊ธฐ์ฌํฉ๋๋ค.
- JetBrains์ 2024๋ ์ค๋ฌธ ์กฐ์ฌ ์ ๋ฐ๋ฅด๋ฉด, Java ๊ฐ๋ฐ์์ 65% ๊ฐ Spring Boot๋ฅผ ์ฌ์ฉํ๋ฉฐ, ๊ทธ์ค ๋ค์๋ Starter๋ฅผ ํ์ฉํด ์์กด์ฑ์ ๊ด๋ฆฌํ๊ณ ์์ต๋๋ค.
- ํนํ ๋ง์ดํฌ๋ก์๋น์ค ์ํคํ ์ฒ ๋ฅผ ๋์ ํ๋ ๊ธฐ์ ๋ค์ด ๋์ด๋๋ฉด์, spring-boot-starter-web ๊ณผ ๊ฐ์ ๊ฒฝ๋ํ๋ ํจํค์ง ์ฌ์ฉ์ด ๋์ฑ ์ค์ํด์ง๊ณ ์์ต๋๋ค.
๊ด๋ จ ๋งํฌ
Spring Boot Starter ๋ชฉ๋ก๐
Spring Boot์ JPA ํตํฉ ๊ฐ์ด๋๐
FAQ
1. Starter๋ ๋ฌด์์ ์๋ฏธํ๋์?
- Starter๋ ์ฌ๋ฌ ์์กด์ฑ์ ๋ฏธ๋ฆฌ ๋ฌถ์ด๋์ ํจํค์ง๋ก, ํ์ํ ๊ธฐ๋ฅ์ ์ฝ๊ฒ ์ถ๊ฐํ ์ ์๋๋ก ๋์์ค๋๋ค.
2. ์์กด์ฑ ์ถฉ๋์ ์ด๋ป๊ฒ ํด๊ฒฐํ๋์?
pom.xml
์์exclusions
์ต์ ์ ์ฌ์ฉํด ๋ถํ์ํ ์์กด์ฑ์ ์ ์ธํ ์ ์์ต๋๋ค.
3. spring-boot-starter-web๊ณผ Tomcat ์๋ฒ๋ ํ์์ธ๊ฐ์?
- ์๋์. Jetty๋ Netty ๊ฐ์ ๋ค๋ฅธ ์๋ฒ๋ฅผ ์ฌ์ฉํ๊ณ ์ถ๋ค๋ฉด Tomcat์ ์ ์ธํ ์ ์์ต๋๋ค.
4. ํ ์คํธ์ ์ฌ์ฉํ ์ ์๋ Starter๊ฐ ์๋์?
- spring-boot-starter-test ๋ฅผ ์ฌ์ฉํ๋ฉด JUnit, Mockito ๋ฑ ํ ์คํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ํฌํจ๋ฉ๋๋ค.
5. Starter๋ฅผ ์๋ชป ์ ํํ๋ฉด ๋ฌธ์ ๊ฐ ๋๋์?
- ๋ถํ์ํ Starter๋ฅผ ๋ง์ด ํฌํจํ๋ฉด ์ ํ๋ฆฌ์ผ์ด์ ํฌ๊ธฐ๊ฐ ์ปค์ง๊ณ ์ฑ๋ฅ์ด ์ ํ๋ ์ ์์ต๋๋ค. ํ์ํ ๊ธฐ๋ฅ๋ง ์ ํํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
์ด์ Spring Boot Starter ๋ฅผ ํ์ฉํด ๋ ํจ์จ์ ์ผ๋ก ํ๋ก์ ํธ๋ฅผ ์์ํด๋ณด์ธ์! Starter๋ฅผ ์ ์ ํ ํ์ฉํ๋ฉด ๊ฐ๋ฐ ์์ฐ์ฑ ์ ํฌ๊ฒ ํฅ์์ํฌ ์ ์์ต๋๋ค. ๋ค์ ํฌ์คํ ์์๋ JPA๋ฅผ ํ์ฉํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๋ ๋ฐฉ๋ฒ์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค.
๋๊ธ