Spring Boot

[Spring Boot] 5. 스프링 부트 스타터 (Spring Boot Starter)살펴보기

자굴이 2024. 8. 19. 19:38

 

1. 스프링 부트 스타터 (Spring Boot Starter)

- 스프링 부트 스타터 (Spring Boot Starter): 의존성이 모여있는 그룹 

=> 특정 기능을 구현하기 위해 필요한 의존성(dependencies)을 한 번에 관리할 수 있는 일종의 패키지 모음

 

- 스프링 부트에서 특정 기능(ex. 웹 개발, 데이터베이스 접근 등)을 사용하려면 여러 라이브러리와 설정이 필요

-> 과거 : 개발자가 각 라이브러리를 개별적으로 추가하고 설정 필요 ->번거로움 & 실수 가능성 큼

- 스타터 사용 -> 필요한 기능을 간편하게 설정 가능

- 특정 기능을 구현하기 위해 필요한 라이브러리와 설정을 미리 패키지로 묶어 제공

-> 개발자는 단순히 해당 스타터를 의존성에 추가하는 것만으로도 필요한 모든 것을 자동으로 가져올 수 있음

 

- 명명 규칙 O : spring-boot-starter-[작업유형]

 

스타터(Starter) 설명
spring-boot-starter-jdbc JDBC 관련 스타터
 spring-boot-starter-web Spring MVC를 사용해서 RESTful 웹 서비스를 개발할 때 필요한 의존성 모음
spring-boot-starter-test  스프링 애플리케이션을 테스트하기 위해 필요한 의존성 모음
spring-boot-starter-validation 유효성 검사를 위해 필요한 의존성 모음
spring-boot-starter-actuator 모니터링을 위해 애플리케이션에서 제공하는 다양한 정보를 제공하기 쉽게 하는 의존성 모음
spring-boot-starter-data-jpa ORM을 사용하기 위한 인터페이스의 모음인 JPA를 더 쉽게 사용하기 위한 의존성 모음
spring-boot-starter-security 애플리케이션에 보안 기능(인증 및 권한 부여)을 추가할 때 사용
spring-boot-starter-thymeleaf Thymeleaf 템플릿 엔진을 사용. 서버 측에서 HTML을 렌더링할 때 사용.

 

더보기

- ORM(Object-Relational Mapping)

: 객체 지향 프로그래밍 언어를 사용하여 호환되지 않는 유형의 시스템 간에 데이터를 변환하는 프로그래밍 기술

즉, 객체와 관계형 데이터베이스의 데이터를 매핑하는 것을 의미

(출처 : https://f-lab.kr/insight/understanding-orm)

 

- JPA(Java Persistence API) 

: 자바에서 객체를 데이터베이스에 저장하고 관리하기 위한 인터페이스와 기능을 제공하는 API. 

- JPA를 사용하면 객체와 관계형 데이터베이스 간의 매핑을 손쉽게 처리할 수 있으며 데이터베이스의 CRUD(Create, Read, Update, Delete) 작업을 간편하게 수행 가능

(출처: https://ccomccomhan.tistory.com/131 [[꼼꼼한 개발자] 꼼코더:티스토리])

 

 

2. 코드 실습 - 스프링 부트 스타터 (Spring Boot Starter)

 

ex. Gradle 사용 경우

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-web' // 웹 관련 기능 제공
    testImplementation 'org.springframework.boot:spring-boot-starter-test'// 테스트 기능 제공
}

 

ex. Maven 사용 경우

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
</dependencies>

 

 

 

 

인텔리제이 - gradle - 프로젝트 더블클릭해서 확인 가능

 spring-boot-starter-web => Spring MVC를 사용해서 RESTful 웹 애플리케이션 개발에 사용

 

 

3. Spring Boot 가 의존성을 가져오는 방법

- 스프링부트는 현재 버전에 맞는 라이브러리를 알아서 관리

- 만약 어떤 의존성 사용하는지 버전별 확인 필요?

-> 스프링 공식문서 Dependency Versions에서 확인

https://docs.spring.io/spring-boot/appendix/dependency-versions/index.html

 

Dependency Versions :: Spring Boot

This appendix provides details of the dependencies that are managed by Spring Boot.

docs.spring.io

 

깃허브에서도 확인 가능

 

https://github.com/spring-projects/spring-boot/tree/main/spring-boot-project/spring-boot-starters

 

spring-boot/spring-boot-project/spring-boot-starters at main · spring-projects/spring-boot

Spring Boot. Contribute to spring-projects/spring-boot development by creating an account on GitHub.

github.com

 

 

 

원하는 스타터 클릭

build.gradle 파일의 dependencies 확인 가능

 

 

아직 스타터를 사용해서 설정을 간편하게 적용해본 적이 없어서 와닿지는 않지만, 메이븐의 XML 파일을 통해서 의존성을 주입하는건 스프링 프레임워크에서도 해봤던 터라 비슷한 개념인 것 같다.

아직 Greadle을 사용해서 프로젝트를 해 본 적이 없어서 이론적으로 좀 더 친숙해질 시간이 필요할 것 같다.