TOP
본문 바로가기
📚 목차
[Java]/Spring Boot

[Java] Spring Boot: Spring Initializr - Dependencies

by 기록자_Recordian 2025. 4. 15.
728x90
반응형
이전 내용
 

[Java] Spring Boot: 제어 역전, 의존성 주입

이전 내용 [Java] Spring Boot - 기본 구조, "Hello World" 띄워보기이전 내용 [Java] 인텔리제이 새 프로젝트 생성하기이전 내용 [Java] 스프링부트를 위한 인텔리 제이(커뮤니티) 다운로드이전 내용 스프링

puppy-foot-it.tistory.com


스프링부트 스타터

 

스프링부트 스타터: 의존성이 모여 있는 그룹으로, 스타터를 사용하면 필요한 기능을 간편하게 설정할 수 있다.

 

- 명명규칙: spring-boot-starter-{작업유형}

스타터 설명
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 Initializr
주요 모듈

 

 

Spring Initializr에서는 원하는 모듈을 Dependencies에서 추가할 수 있다.

 

1. Developer Tools
개발자 도구는 애플리케이션 개발 및 디버깅을 쉽게 해주는 다양한 도구와 기능이다. Spring Boot DevTools를 포함하여 자동 재시작, 라이브 리로드, 템플릿 추가 등을 통해 개발자의 생산성을 높인다.

  • Spring Boot DevTools: 개발 중에 편리한 기능(자동 재시작, 라이브 리로드 등)을 제공하여 개발자의 생산성을 높이는 도구. Devtools는 보통 스프링 어플리케이션을 띄웠을 때, 재시작하지 않고 코드의 변화를 반영시킬 때 사용한다. HTML 파일의 경우 LiveReload 기능을 제공해, 저장하면 그 변화가 페이지에 바로 나타나게 할 수도 있다.
  • Lombok: class에 getter, setter, toString, equals, hashcode, constructor, builder 패턴 메소드까지 어노테이션으로 간단하게 지정해줄 수 있어, 자바 특유의 장황한 클래스를 줄여주는 좋은 툴이다.

2. Template Engines
템플릿 엔진은 동적 웹 페이지를 생성하는 도구로, 서버 측에서 HTML 콘텐츠를 생성하고 클라이언트에 제공하는 역할을 한다. Thymeleaf, FreeMarker 등이 대표적인 템플릿 엔진이다.

  • Thymeleaf: 서버 측에서 HTML을 렌더링하는 데 사용되는 가장 인기 있는 템플릿 엔진으로, Spring MVC와 잘 통합된다.
  • FreeMarker: 또 다른 강력한 템플릿 엔진으로, 복잡한 템플릿을 다룰 수 있는 뛰어난 표현력을 가진다.

3. Security
애플리케이션 보안을 담당하는 모듈로, 사용자 인증, 권한 부여, CSRF 방지, 세션 관리 등의 기능을 제공한다. Spring Security가 가장 많이 사용된다.

  • Spring Security: 널리 사용되는 보안 프레임워크로, 인증, 권한 부여 및 웹 애플리케이션의 보안을 강화하는 모든 기법을 통합한다.
  • OAuth2 Client / OAuth2 Resource Server

4. Web
웹 애플리케이션 개발을 지원하는 모듈로, Spring MVC, RESTful 서비스 및 WebSocket 통신을 포함한다. 클라이언트와 서버 간 소통을 원활하게 해준다.

  • Spring Web: 웹 서비스를 만드는 데에 가장 중요한 모듈로, 내장 톰캣뿐 아니라 Spring MVC 패턴을 구현하는 데에 필요한 대부분의 기능들이 있다. REST API 서버를 만들 때 필수적인 모듈이다.
  • Spring MVC: 웹 애플리케이션 개발을 위한 프레임워크로, RESTful 서비스와 더불어 전통적인 MVC 아키텍처를 지원한다.
  • Spring WebFlux: 비동기 웹 애플리케이션을 위한 리액티브 프로그래밍 모델을 제공하며, 높은 성능을 요구하는 애플리케이션에 적합하다.

5. SQL
관계형 데이터베이스와의 상호작용을 지원하는 모듈이다. Spring Data JPA 등을 통해 SQL 쿼리를 쉽게 실행하고 ORM(Object Relational Mapping)을 활용하여 데이터베이스와 소통할 수 있다.

  • Spring Data JPA: JPA(Java Persistence API)를 쉽게 활용할 수 있도록 돕는 모듈로, CRUD 작업을 간편하게 처리할 수 있게 해준다.
  • Hibernate: ORM 프레임워크로, JPA의 구현체 중 하나로 널리 사용된다.
  • H2 Database: 개발용 서버에서 따로 DB를 붙일 필요가 없을때 추가해주면 좋다. H2는 메모리를 데이베이스로 사용하는 즉각 설치되는 데이터베이스로, 의존성에 추가하는 것만으로도 데이터베이스 설정을 전혀 할 필요가 없이 바로 사용할 수 있다. 그러나 개발 전용이기 때문에 어플리케이션이 종료될 때 내부 데이터가 모두 사라진다.
  • IBM DB2 / MS SQL Server / MySQL / Oracle / PostgreSQL Driver: 각종 데이터베이스들의 연결 드라이버를 지원하며, 필요한 것만 체크해 주면 DB 연결 준비가 끝난다.

6. NoSQL
비관계형 데이터베이스와의 상호작용을 위한 모듈이다. MongoDB, Cassandra 등 다양한 NoSQL 데이터베이스에 대한 지원을 제공한다.

  • Spring Data MongoDB: MongoDB와의 상호작용을 쉽게 해주는 모듈로, 비관계형 데이터베이스 작업을 단순화한다.
  • Spring Data Cassandra: Cassandra와 통합하여 데이터 액세스를 지원하는 모듈이다.

7. Messaging
설명: 애플리케이션 간 비동기적 통신을 지원하는 모듈이다. 메시지 큐 시스템(예: RabbitMQ, Kafka)과 통합하여 메시지를 주고받는 기능을 제공한다.

  • Spring Cloud Stream: 메세징 기반 마이크로서비스 아키텍처를 손쉽게 구축할 수 있도록 도와주는 모듈이다. 다양한 메시징 시스템과 통합이 가능하다.
  • RabbitMQ: 메시지 브로커로, Spring Boot와 함께 사용하기 쉬우며, 비동기 메시징을 필요로 하는 애플리케이션에 유용하다.

8. I/O
입력 및 출력 작업을 지원하는 모듈로, 파일 시스템, 네트워크 소켓, 스트림 등의 I/O 작업을 처리할 수 있다.

  • Apache Commons IO: 자주 사용하는 I/O 관련 유틸리티 클래스들을 제공하여 파일 작업이나 스트림 처리를 간편하게 도와준다.

9. Ops (Operations)
애플리케이션 운영 및 관리를 위한 도구와 서비스다. 모니터링, 로그 관리, 성능 분석 툴 등을 포함하여 운영팀이 애플리케이션의 상태를 효율적으로 관리할 수 있도록 해준다.

  • Spring Boot Admin: Spring Boot 애플리케이션의 모니터링 및 관리를 위한 GUI 도구로, 애플리케이션의 상태를 시각적으로 확인할 수 있다.

10. Observability
애플리케이션의 가시성을 높이는 기술이다. 모니터링, 로깅, 트레이싱 기능을 통해 시스템의 성능 및 문제 발생 시점에 대한 정보를 수집할 수 있다.

  • Spring Cloud Sleuth: 분산 시스템에서 트레이싱(요청 추적) 기능을 제공하여, 요청의 흐름을 시각화할 수 있도록 돕는다.
  • Prometheus & Grafana: 성능 모니터링 및 알림 시스템을 제공하여, 애플리케이션의 메트릭스(Metrics)를 수집하고 대시보드를 통해 시각화할 수 있게 한다.

11. Testing
애플리케이션의 단위 테스트, 통합 테스트, 기능 테스트를 지원하는 도구와 프레임워크다. Spring Test, JUnit, Mockito 등을 활용하여 자동화된 테스트 환경을 구축할 수 있다.

  • JUnit: 자바의 단위 테스트 프레임워크로, 가장 널리 사용되는 테스트 도구 중 하나다.
  • Mockito: 자바의 모킹(mocking) 프레임워크로, 테스트를 위한 목(mock) 객체를 쉽게 생성할 수 있게 해준다

12. Spring Cloud Config
분산 시스템 또는 마이크로서비스 환경에서 구성 파일을 중앙 집중식으로 관리할 수 있도록 돕는 모듈이다. 클라우드 기반 애플리케이션에서 동적으로 환경 구성을 업데이트하는 데 유용하다.

  • Spring Cloud Config Server: 중앙 집중식 구성 서버를 제공하여 애플리케이션의 환경 설정을 관리할 수 있도록 지원한다.

13. Spring Cloud Discovery
서비스 등록 및 발견을 위한 기능을 제공한다. 클라우드 환경에서 마이크로서비스간 연결을 간편하게 해준다.

  • Netflix Eureka: 서비스 등록 및 발견을 위한 클라우드 기반 시스템으로, 마이크로서비스 환경의 통신을 간편하게 해준다.

14. Spring Cloud Routing
요청을 적절한 서비스로 라우팅하는 기능을 가진다. Spring Cloud Gateway와 같은 솔루션을 통해 API Gateway 역할을 수행한다.

  • Spring Cloud Gateway: API Gateway 역할을 하며, 다양한 서비스에 대한 라우팅 및 필터링을 제공한다.

15. Spring Cloud Circuit Breaker
비스 호출 실패 시 애플리케이션의 안정성을 높이기 위한 패턴이다. Circuit Breaker 패턴을 통해 시스템이 과부하되는 것을 방지한다.

  • Resilience4j: Circuit Breaker 패턴을 구현한 경량 모듈로, Spring Boot와 쉽게 통합된다.
  • Hystrix: Netflix에서 제공하는 Circuit Breaker 라이브러리로, 장애를 예방하고 시스템의 안정성을 높일 수 있다.

16. Spring Cloud Messaging
클라우드 환경에서의 메시지 브로커와의 통합을 지원한다. 다양한 메시징 시스템과의 상호작용을 통해 비동기적이며 이벤트 기반의 아키텍처를 구축할 수 있도록 돕는다.

  • Spring Cloud Stream: 마이크로서비스 간 이벤트 전송을 간편하게 구현할 수 있게 해주는 모듈이다.

17. VMware Tanzu Application Service
클라우드 네이티브 애플리케이션을 빌드, 배포 및 관리할 수 있는 플랫폼이다. 자동 확장, 장애 복구 등의 다양한 기능을 제공한다.

  • Tanzu Application Service: 클라우드 네이티브 애플리케이션을 쉽게 배포하고 관리할 수 있는 플랫폼으로, 다양한 자동화 기능을 제공한다.

18. VMware Tanzu Spring Enterprise Extensions
Tanzu 환경에 최적화된 Spring Framework의 확장 기능이다. 클라우드 네이티브 애플리케이션을 구축하는 데 필요한 추가 서비스와 기능을 제공한다.

  • Tanzu Spring Enterprise: VMware Tanzu 환경에서 Spring 애플리케이션의 성능을 최적화하기 위한 다양한 기능을 제공한다.

19. Microsoft Azure
Microsoft의 클라우드 서비스 플랫폼으로, 다양한 클라우드 서비스와 애플리케이션 호스팅 기능을 제공한다. Spring 애플리케이션을 Azure에 배포하고 관리하는 데 유용하다.

  • Azure Spring Cloud: Spring Boot 애플리케이션을 Azure에 간편하게 배포하고 관리할 수 있도록 도와주는 완전 관리형 서비스이다.

20. Google Cloud
Google의 클라우드 서비스 플랫폼으로, 다양한 클라우드 서비스와 솔루션을 제공한다. Spring 애플리케이션을 Google Cloud에 배포하거나, Google Cloud 서비스를 통합하여 사용할 수 있다.

  • Google Cloud Spring Connector: Google Cloud 플랫폼과 Spring 애플리케이션 간의 통합을 위한 유용한 도구를 제공한다.

21. AI
인공지능 기술을 활용하여 애플리케이션에 지능적인 기능을 추가하는 것을 의미한다. 머신 러닝, 자연어 처리 등의 다양한 AI 기술을 Spring 애플리케이션에서 쉽게 사용할 수 있도록 하는 라이브러리와 서비스를 포함한다.

  • TensorFlow: 오픈소스 머신러닝 플랫폼으로, Spring 애플리케이션에서 지능형 기능을 통합할 수 있도록 지원한다.
  • Apache Mahout: 대규모 데이터셋을 위한 머신러닝을 지원하는 라이브러리다.

Spring Initializr 이용하여
이미 생성된 프로젝트에 Dependency 추가하기

 

초기에 Dependency를 추가하지 못했을 경우에는 넣을 수 있다.

인텔리제이의 프로젝트 폴더 내에 있는 build.gradle 에 추가하면 된다.

 

추가할 모듈이 있는데, 정확히 모를 경우

Spring Initializr에 접속하여 [ADD DEPENDENCIES] 를 클릭한 후, 추가할 모듈을 검색 한 뒤 [EXPLORE] 클릭

 

내용 중에 dependencies {} 내의 내용을 복사하여 인텔리제이의 build.gradle의 dependencies{} 사이에 붙여넣기 하면 된다.

※ 기존 내용의 가장 밑에 추가할 내용을 붙여넣기 하면 된다.

 


[참고]

https://appleg1226.tistory.com/11


다음 내용

 

[Java] Spring Boot: Maven Repository

이전 내용 [Java] 스프링부트: Spring Initializr - Dependencies이전 내용 [Java] Spring Boot: 제어 역전, 의존성 주입이전 내용 [Java] Spring Boot - 기본 구조, "Hello World" 띄워보기이전 내용 [Java] 인텔리제이 새 프

puppy-foot-it.tistory.com

 

728x90
반응형