본문 바로가기
Spring Boot

스프링부트 공부 시작

by bloodFinger 2020. 5. 2.

왜 스프링부트 ?

예를 들어 트랜잭션 관리나 스프링 MVC 같은 기능을 사용하려면 명시적인 XML이나 자바 구성이 필요하고

Thymeleaf기반의 웹 뷰 같은 서드파티 라이브러리 기능을 사용할 때도 명시적인 구성이 필요하다.

스프링의 DispatcherServlet 등 서블잇이나 필터를 구성하려면 web.xml이나 서블릿 초기화 객체에 

명시적인 구성이 필요하다.

또한 의존 라이브러리의 버전을 잘못 선택하여 발생하는 모든 호환성 문제는 생산성을 망치는 주범이다.

 

이러한 문제점들에 대해 스프링 부트가 무대를 뒤집어 놓으셨다...

 

그렇다 이제 개발자는 애플리케이션 코드만 작성하면 된다.

그래도 아직 의심스러울수 있다.

넷플릭스 , 배민 , 쿠팡 , 등등 많은 기업에서 스프링부트를 표준으로 개발을 하고 있고 좋은 퍼포먼스를 보이고 있다.

 

스프링 부트의 핵심

1. 자동구성

내장 데이터베이스와 JdbcTemplate 등 수많은 자동 구성이 있다.

스프링 부트는 구성의 부담을 제거하는 수십 사지 방법을 제공하며 여기에는 자바의 영속성(JPA) , Thymeleaf 템플릿 , 보안 , 스프링 mvc 자동 구성도 포함되어 있다.

 

2. 스타터 의존성

기존에 의존성을 추가하려면 라이브러리 그룹이름과 아티팩트를 체크하고 어떤 버전인지 호환은 가능한지에 대해서 일일이 찾아보는 수고로움이 있었다.
이러한 부분들을 스프링 부트에서는 전이적 의존성(Transitive Dependency) 해결 방법을 이용한다.
예를 들어 JOSN형식의 REST API를 스프링 MVC로 만든다고 가정한다면 메이븐이나 그레이들에 8가지 의존성이 추가되어야 한다.

  • org.springframework:spring-core
  • org.springframework:spring-web
  • org.springframework:spring-webmvc
  • com.fasterxml.jackson:core:jackson-databind
  • org.hibernate:hibernate-validator
  • org.apache.tomcat.embed:tomcat-embad-core
  • org.apache.tomcat.embed:tomcat-embad-el
  • org.apache.tomcat.embed:tomcat-embad-Logiging-juli

반면에 스프링 부트의 스타터 의존성을 사용하면 스프링 부트웹 스타터를 빌드 의존성으로 간단히 추가하면 된다.

  • org.springframework.boot:spring-boot-starter-web

 -> 즉 스프링부트의 스타터 의존성을 사용하면 필요한 라이브러리의 버전을 고민할 필요가 없다는 것!


3. 명령줄 안터페이스

classPath와 import를 자동으로 설정해준다.

사실 전통적인 개발과는 거리가 멀고 처음 spring을 접하는 개발자에게는 독이 될수있다는 생각을 가지고 있다.

하지만 spring이 능숙한 개발자에게는 너무 편한 기능을 제공해준다.

 

4. 액추에이터

액추에이터는 작동 중인 애플리케이션의 내부를 살펴볼 수 있는 기능을 재공한다.

 

  • 컨텍스트의 구성 빈
  • 자동구성으로 구성된 것
  • 환경변수 , 시스템 프로퍼티 , 구성 프로퍼티 , 명령줄 인자
  • 스레드의 현재상태
  • 최근 처리된 HTTP 요청 정보
  • 메모리 사용량 , 가비지 컬렉션 , 웹 요청 , 데이터 소스 사용량 등 다양한 메트릭 

 

 

 

'Spring Boot' 카테고리의 다른 글

Spring Boot 에서 AOP 활용하기  (0) 2020.05.29
스프링 부트를 구성하는 애노테이션  (0) 2020.05.05