오늘은 스프링부트를 생성하는 방법에 대해서 정리해 보려고 한다. 스프링부트는 자바 웹 애플리케이션을 빠르고 쉽게 개발할 수 있도록 도와주는 강력한 오픈 소스 프레임워크다.
스프링 부트 (Spring Boot)
스프링 부트 (Spring Boot)는 자바 웹 애플리케이션을 보다 빠르고 쉽게 개발할 수 있도록 도와주는 오픈 소스 프레임워크다. 스프링 부트 프레임워크의 기능을 확장하고 향상해 개발자가 설정의 번거로움 없이 간단하고 빠르게 웹 애플리케이션을 만들 수 있도록 지원한다.
Starter 의존성
스프링 부트는 애플리케이션 개발을 위한 많은 스타터 의존성을 제공한다. 이러한 스타터는 필요한 의존성을 자동으로 추가하고 설정을 쉽게 할 수 있도록 해준다. 예를 들어, 웹 애플리케이션을 개발할 때는 spring-boot-starter-web 스타터를 사용할 수 있다.
자동 구성
스프링 부트는 자동 구성을 통해 애플리케이션을 시작할 때 자동으로 설정을 수행한다. 개발자가 별도로 설정하지 않아도 스프링의 다양한 기능들이 자동으로 동작하도록 되어 있다.
내장 서버
스프링 부트는 내장된 서블릿 컨테이너를 제공하여 애플리케이션을 쉽게 배포하고 실행할 수 있도록 한다. 그렇기 때문에 별도의 외부 서버 설정이 필요 없다.
스프링 생태계와의 통합
스프링 부트는 스프링의 다양한 기술들과 잘 통합되거 있다. 그래서 스프링의 다양한 기능들을 쉽게 사용할 수 있다.
강력한 보안
스프링 부트는 강력한 보안 기능을 제공하여 개발자가 쉽게 보안을 구성할 수 있도록 한다.
스프링 부트는 이와 같이 특징들을 통해 개발자들이 빠르고 쉽게 안정적이며 확장 가능한 웹 애플리케이션을 개발할 수 있도록 지원한다.
스프링 부트의 활용 사례
스프링 부트는 다양한 환경에서 활용할 수 있는 강력한 프레임워크다. 워낙 구축이 쉽고 가볍다보니 활용도가 높은 편이다.
웹 애플리케이션 개발
스프링 부트는 스프링 프레임워크를 기반으로 한 웹 애플리케이션을 빠르고 쉽게 개발할 수 있는 환경을 제공한다. Restful API 서비스, 웹 어플리케이션, 마이크로서비스 등 다양한 형태의 웹 애플리케이션을 개발할 수 있다.
마이크로서비스 아키텍처
스프링 부트는 마이크로서비스 아키텍처를 구현하는 데에 매우 적합하다. 각각의 마이크로서비스를 독립적으로 개발하고 배포할 수 있으며, 스프링 부트의 내장 서버와 자동 구성 기능을 통해 마이크로서비스 간의 통신이나 서비스 디스커버리 등을 간편하게 구현할 수 있다.
배치 개발
스프링 부트는 대용량 데이터를 처리하는 배치 작업에도 적합하다. 스프링 배치(Spring Batch) 프레임워크를 사용하여 데이터 처리, ETL(Extract,, Transform, Load) 작업, 정기적인 배치 작업 등을 효율적으로 구현할 수 있다.
시스템 통합
스프링 부트는 다양한 시스템 간의 통합을 지원한다. 외부 시스템과의 통신을 위한 RESTful API 클라이언트, 메시징 시스템과의 통합을 위한 메시지 큐 클라이언트 등을 쉽게 개발할 수 있다.
클라우드 네이티브 애플리케이션 개발
스프링 부트는 클라우드 네이티브 애플리케이션을 개발하는 데에도 적합하다. 도커(Docker)와 Kubernetes 같은 컨테이너 기반의 환경에서 애플리케이션을 배포하고 관리할 수 있으며, 스프링 클라우드(Spring Cloud) 프로젝트를 통해 마이크로서비스 아키텍처를 클라우드 환경에서 관리할 수 있다.
이 외에도 스프링 부트는 다양한 업무와 상황에서 활용이 가능하며, 개발자의 요구에 따라 유연하게 적용할 수 있다.
1. 이클립스 실행
먼저 사용하는 eclipse 또는 sts를 실행한다.
(개인적으로는 sts가 많이 무겁다고 생각해 eclipse를 설치해서 필요한 라이브러리만 받아서 사용을 한다)
2. Spring tools 설치 (STS 환경이면 생략)
eclipse를 실행하면 Spring boot에 필요한 tools을 설치한다. 여기서 sts를 사용하는 환경은 생략해도 된다.
해당 tool을 설치하면 spring boot 관련한 기능들이 추가가 된다.
3. Spring Boot 생성
Spring tools 설치 완료 후 eclipse 재시작을 하면 Spring boot 관련한 기능들이 추가가 되어 있다.
File > New > Spring Starter Project
선택한다.
* 프로젝트 생성 정보 입력
위와 같이 창이 뜨게 되는데 생성할 프로젝트의 정보들을 채워 넣어준다.
Name : 프로젝트명
type : maven (gradle)
java version : 자바 버전 변경
group : com.demo
package : com.demo.system
정보 입력 후 하단의 Next 버튼을 클릭한다.
* library 설치
Available 입력창에 설치할 라이브러리를 검색하여 추가해 준다.
대중적으로 많이 사용하는 라이브러리들은 위의 창에서 추가가 가능하고 검색에 안나오는 라이브러리는 별로도 설치한다.
저는 간단하게 Spring web, lombok 이렇게 두개를 설치하고 진행하였다.
라이브러리 선택 후 하단의 Finish 버튼을 클릭하면 프로젝트 생성이 진행된다.
* 프로젝트 생성된 패키지 구조
이렇게 하면 Spring boot 생성이 완료된다.
그러면 다음은 간단하게 controller를 만들어서 호출을 해보도록 하자.
4. boot dashboard 설정
프로젝트를 간단하게 실행, 종료, 디버그 등 다룰 수 있는 boot dashboard 기능을 추가한다.
5. Test Rest Controller 생성
실행한 프로젝트를 간단하게 호출을 하기 위해 Rest Controller를 만들어 줬다.
com.demo.system.test > TestController.java 생성
package com.demo.system.test;
import java.util.HashMap;
import java.util.Map;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class TestController {
@GetMapping("/test")
public ResponseEntity<Map<String, Object>> test () {
Map<String, Object> resultMap = new HashMap<String, Object>();
resultMap.put("test", "test123");
return ResponseEntity.ok(resultMap);
}
}
간단한 Rest Controller 작성
6. Project 실행
위에서 추가한 boot dashboard에서 start 버튼을 눌러 실행시켜 준다.
그러면 위와 같이 console 창에 로그가 올라가고 위와 같이 나온다면 정상적으로 spring boot가 실행되었다.
Spring boot는 tomcat을 내장하고 있어 따로 서버 세팅을 하지 않아도 구동이 가능하다.
그러면 위에서 생성했던 controller를 호출해 보자.
Rest Controller로 만들었기 때문에 ui 화면은 없고 결과로 반환했던 json 구조의 데이터만 볼 수 있다.
Spring boot는 정상적으로 잘 구동되었다.
다음은 간단하게 포트를 변경해 보자.
7. 포트 변경
프로젝트 내에서 해당 경로의 설정 파일을 열어준다.
src/main/resources > application.properties
server.port=8090
그리고 위와 같이 설정값을 주고 원하는 포트 번호로 변경해 준다. 설정값이 없으면 기본 포트인 8080으로 설정이 되고 위와 같이 설정값을 줘야 변경이 된다.
변경 후 boot dashboard를 다시 재시작한다.
변경된 포트로 경로를 변경해 주고 호출하면 위와 같이 변경된 포트로 동일하게 결과가 나온다.
스프링 부트 사용 시 주의사항
스프링 부트를 생성하고 개발하는 방법은 간단하지만 몇 가지 주의사항이 있다.
의존성 관리
스프링 부트는 자동 구성과 의존성 관리를 강력하게 지원하지만, 너무 많은 의존성을 추가하는 것은 애플리케이션의 복잡성을 증가시킬 수 있다. 필요한 의존성만을 추가하고, 불필요한 의존성을 최소화하는 것이 좋다.
자동 구성 이해
스프링 부트의 자동 구성 기능은 편리하지만, 자동으로 설정되는 기본값과 동작 방식을 충분히 이해하지 않고 사용하면 예상치 못한 문제가 발생할 수 있다. 그렇기 때문에 자동 구성이 어떻게 동작하는지를 이해하고 필요에 따라 커스터마이징하는 것이 좋다.
보안 취약점
스프링 부트는 보안 기능을 제공하지만, 개발자가 적절한 보안 설정을 작업해야 한다. 기본적인 보안 설정부터 SSL/TLS 적용, 사용자 인증 및 권한 부여 등을 고려해야 한다.
성능 관리
스프링 부트는 자동으로 성능 최적화를 수행하지만, 대규모 트래픽을 처리하는 애플리케이션의 경우 성능 튜닝이 필요할 수 있다. 모니터링과 로깅을 적절히 활용하여 성능 문제를 식별하고 해결해야 한다.
이러한 주의사항을 염두에 두고 스프링 부트를 사용하는 것이 안정적이고 효율적인 애플리케이션을 개발할 수 있는 방법이다.
마무리
오늘은 이렇게 스프링 부트의 초기 프로젝트 생성 방법을 정리해 봤다. 스프링 프레임워크에 비하면 훨씬 간단하고 쉽다는 것을 알 수 있었다. 생각보다 프로젝트 생성 할 일이 많지는 않지만, 한 번씩이라도 스프링 부트를 생성해 본다면 업무에 많은 도움이 될 수 있다. 그리고 정말 많은 업무와 상황에서 사용되는 프레임워크이기 때문에 한 번쯤 세팅을 해보고 사용해 본다면 업무 범위가 많이 확장될 것이다.
'Java > Spring Boot' 카테고리의 다른 글
[Spring Boot] 리액트 네이티브 bcrypt를 이용해서 암호화 검증하기 (0) | 2023.07.10 |
---|---|
Spring Boot 매핑 어노테이션 종류 알아보기 (@GetMapping, @PostMapping) (0) | 2023.01.27 |
[Spring Boot] 스프링부트에서 JSP Tiles3 연동하기 (0) | 2023.01.17 |
Spring Boot + JSP 연동 (서버 재시작 없이 jsp 수정 사항 반영하기) (0) | 2023.01.04 |